MySQL基础语法(长期更新)

8.0MySQL常见语法:

#启动mysql服务器:net start mysql

#关闭:net stop mysql

#命令行进入数据库:

mysql -h 主机地址-u 用户名 -p用户密码 ( -p后面的密码要连着一起写) mysql -u root -ppassword

#退出:exit:

#显示当前mysql的version的各种信息:status;

#显示数据库:show databases;

#判断是否存在数据库test,有的话先删除:drop database if exists test;

#创建数据库:create database test;

#删除数据库:drop database test;

#使用该数据库:use test;

#显示数据库里面的表(先进库 在显示表):show tables;

#先判断表是否存在,存在先删除: drop table if exists student;

#创建表:create table student(

id int auto_increment primary key,

name varchar(50),

sex varchar(20),

date varchar(50),

content varchar(100)

)default charset=utf8;

#删除表:drop table student;

#查看表的结构:describe student;  可以简写为desc student;

#插入数据:

insert into student values(null,'aa','男','1994-05-14','yy');

insert into student values(null,'bb','女','1991-11-25','ll');

insert into student values(null,'cc','男','1992-10-5','tt');

insert into student values(null,'dd','男','1992-09-09','......');

insert into student values(null,'ee','女','1994-08-16','ll');

#查询表中的数据:

select * from student;

select id,name from student;

#修改某一条数据:update student set sex='男' where id=4;

#删除数据:delete from student where id=5;

# and 且:select * from student where date>'1949-10-1' and date<'2049-10-1';

# or 或:select * from student where date<'1992-10-5' or date>'1992-10-5';

#between:select * from student where date between'1992-2-3' and '1992-12-12';

#in 查询指定集合内的数据:select * from student where id in(1,3,5);

#排序语法 asc升序、desc 降序:

升序:select * from student order by id asc; 

降序:select * from student order by id desc; 

#分组查询 #聚合函数

select max(id),name,sex from student group by sex;

select min(date) from student;

select avg(id) as'求平均' from student;

select count(*) from student;  #统计表中总数

select count(sex) from student;  #统计表中性别总数  若有一条数据中sex为空的话,就不予以统计

select sum(id) from student;

#查询第i条以后到第j条的数据(不包括第i条):select * from student limit 2,5; 

 #显示3-5条数据

#查看数据文件路径:

mysql的数据文件在datadir下,在数据库中执行 show variables like '%datadir%';会显示数据库存放路径

#巩固练习:

创建表:

create table person(

id int  auto_increment primary key,

name varchar(10)not null,

sex varchar(50) ,

phone varchar(13),

account varchar(18),

password varchar(20) 

)default charset=utf8;


create table c(

id int auto_increment primary key,

name varchar(10)notnull,

sex varchar(50) ,  #DEFAULT'男' ,

age int unsigned, #不能为负值(如为负值 则默认为0)

sno int unique    #不可重复

);

drop table c;

desc c;

insert into c (id,name,sex,age,sno)values(null,'涛哥','男',68,1);

insert into c (id,name,sex,age,sno)values(null,'aa','男',68,2);

insert into c (id,name,sex,age,sno)values(null,'平平','男',35,3);

...

select * from c;

#修改数据update c setage=66 where id=2;update c setname='花花',age=21,sex='女'where id=2 delete from c where age=21;

#常用查询语句:

select name,age ,id from c select * from c where age>40 and age<60;  # and 

select * from c where age<40 or age<60;  #or

select * from c where age between 40 and 60 #between 

select * from c where age in(30,48,68,99);    #in

 查询指定集合内的数据select * from c order by age desc;      #order by (asc升序 desc降序)

#分组查询select name,max(age)from c groupby sex;  #按性别分组查年龄最大值

#聚合函数selec tmin(age) from c;select avg(age) as'平均年龄 'from c;select count(*) from c;  #统计表中数据总数select sum(age)from c;

#修改表的名字

语法格式:alter table tbl_name rename to new_name 

例如: alter table c rename to a

#表结构修改create table test

(

id int not null auto_increment primary key, #设定主键

name varchar(20)not null default'NoName', #设定默认值

department_id int not null,

position_id int not null,unique (department_id,position_id) #设定唯一值

);

#向表中增加一个字段(列) 语法格式:

 alter table tablename add column name type;/alter table tablename add(columnname type);

alter table test add column eat varchar(20);   这里的 eat 代表的是新字段


#修改某个表的字段名称及指定为空或非空:

alter table 表名称 change 字段原名称 字段新名称 字段类型 [是否允许非空];


#修改某个表的字段类型及指定为空或非空:

alter table 表名称 change 字段名称 字段名称 字段类型 [是否允许非空];

alter table 表名称 modify 字段名称 字段类型 [是否允许非空];


#student表

student

#coder表

coder表

为了看到多表关联的效果,我将student表的 year 字段改成 date 字段:

alert table student change year date date;

表字段修改完毕以后然后插入数据:

insert into student values(null,'dd','嘿嘿咻咻','中山大道','1992-09-09','男');

insert into student values(null,'dd','雅蠛蝶','方圆E时光','1988-10-2','女');

insert into student values(null,'dd','用力呀宝宝','越秀公园','1989-03-6','男');

insert into student values(null,'dd','用力呀宝宝','越秀公园','1989-03-06','男');

最终的student表为:

student

 多表关联: 

UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。(默认情况下 UNION 操作符已经删除了重复数据)

下面的 SQL 语句从 "coder" 和 "student" 表中选取所有不同的date(只有不同的值):按照升序对结果进行统一排序:

 select date from student union select date from coder order by date;

下面的 SQL 语句从 "coder" 和 "student" 表中选取所有的date(含重复值 使用 union all):

select date from student union all select date from coder order by date;

JOIN关键字:

INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。

LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。

RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

现在有两张表 一个是 coder表 ;一个是student表;两张表数据如下:

JOIN语法格式:

select a.id, a.name, b.date FROM coder a  JOIN student b ON a.name = b.name;

这里的a 代表的就是 coder表:这里的b 代表的就是 student表,结果如下:

Join

其中LEFT JOIN 以及RIGHT JOIN 关键字,上面也说到了,分别获取左、右两边所有记录:

SELECT a.id, a.name, b.date FROM coder a  LEFT JOIN student b ON a.name = b.name;

LEFT JOIN

SELECT a.id, a.name, b.date FROM coder a  RIGHT JOIN student b ON a.name = b.name;

RIGHT JOIN

NULL 值处理

MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作。

所以为了处理这种情况,MySQL提供了三大运算符:

IS NULL: 当列的值是 NULL,此运算符返回 true。

IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。

<=>: 比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true。

关于 NULL 的条件比较运算是比较特殊的。我们不能直接使用 = NULL 或 != NULL 这种Java的语法在表中查找 NULL 值 。在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 false,即 NULL = NULL 返回false 。

因此MySQL 中处理 NULL 的 正确使用姿势是 使用 IS NULL 和 IS NOT NULL 运算符。

NULL运算符

正则表达式:

MySQL中使用 REGEXP 操作符来进行正则表达式匹配。假定现有login表 正则表达式MYSQL语法格式如下:

login

查找name字段中以'小'为开头的所有数据(使用 ^ 这个符号):

SELECT name FROM login WHERE name REGEXP '^小';

查找name字段中以'王'为结尾的所有数据(使用 $ 这个符号):

SELECT name FROM login WHERE name REGEXP '王$';

查找date字段中包含'小明'字符串的所有数据:

SELECT name FROM login WHERE name REGEXP '小明';

select语句


#用文本方式将数据装入数据库表中(例如D:/mysql.txt)loaddata local infile "D:/mysql.txt"intotable MYTABLE;

#导入.sql文件命令(例如D:/mysql.sql)

source d:/mysql.sql;  #或者/. d:/mysql.sql;


如果这篇文章对您有开发or学习上的些许帮助,希望各位看官留下宝贵的star,谢谢。

Ps:著作权归作者所有,转载请注明作者, 商业转载请联系作者获得授权,非商业转载请注明出处(开头或结尾请添加转载出处,添加原文url地址),文章请勿滥用,也希望大家尊重笔者的劳动成果。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,772评论 5 116
  • 观其大纲 page 01 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 M...
    周少言阅读 3,147评论 0 33
  • 《被讨厌的勇气》第二夜下 经典语句和解读 我们都走在一个并不存在纵轴的水平面上,我们不断向前迈进,并不是为了与谁竞...
    寒妈阅读 696评论 0 5
  • 现在你听我说。 但我说什么呢?到今天, 一切事都已到了尽头, 我只等待死,等待黑暗, 我还能见到你,偎着你, 真像...
    月夜下的年轻人阅读 231评论 0 1
  • 160720 做ppt至深夜,带着满满槽点。 想要短暂的安静。 并不愉快的一天。
    XxXxXxN阅读 232评论 2 1