注意:mysql的关键字不区分大小写
SHOW DATABASES;
2、创建数据库
CREATE DATABASE demo DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; #CREATE DATABASE 数据库名 DEFAULT CHARACTER SET 字符编码 COLLATE 字符编码校验规则;
3、删除数据库
DROP DATABASE demo;``` 4、修改数据库的字符编码 ```sql ALTER DATABASE demo DEFAULT character set gbk``` 5、通过use 选择使用不同的数据库 ```sql USE demo; SELECT * FROM abc;``` 也可以通过工具 6、创建表 CREATE TABLE 表名( 字段名 字段类型[NOT NULL][AUTO_INCREMENT], [字段名 字段类型,] .... [字段名 字段类型,] [PRIMARY KEY(字段名)] ) ```sql #学生表(主键id,姓名,年龄,班级) CREATE TABLE student( id INT(10) NOT NULL, name VARCHAR(100), age INT(2), classes VARCHAR(100), PRIMARY key(id) ); SHOW TABLES;``` 7、添加字段 ```sql #给学生表添加一个性别字段 ALTER TABLE student ADD COLUMN sex VARCHAR(10); #给学生表添加两个性别字段 ALTER TABLE student ADD a INT,ADD b TIMESTAMP;
8、修改字段类型
#alter table 表名 modify column 字段名 字段类型 #把字段a改成varchar ALTER TABLE student MODIFY COLUMN a VARCHAR(4);``` 9 、修改字段的名称 alter table 表名 change column 原字段名 新字段名 字段数据类型 #把字段a的名改成a1 ALTER TABLE student CHANGE COLUMN a a1 VARCHAR(4); 10、删除表的一个到多个字段 alter table 表名 drop column 字段名; alter table 表名 drop column 字段名,...,drop column 字段名; #删除a1字段 ALTER TABLE student DROP COLUMN a1; #删除多个字段 ALTER TABLE student DROP COLUMN sex,DROP COLUMN b; 11、删除表 drop table 表名 12、查看表结构 describe 表名; DESCRIBE student; # 2、管理数据 1、查表 #查询学生表的所有数据 SELECT * FROM student; 2、给表插入数据 insert into 表名 values(字段1,字段2,...,字段n); ```sql # 查询学生表的所有数据 SELECT * FROM student; #插入一条数据 INSERT INTO student VALUES (5,'小四',13,'三班'); #根据给定的字段插入数据 INSERT into student (id,age,classes,name) VALUES(6,12,'三班','小八'); #可以只插入一部分字段的值,其他没有指定插入的字段的值默认是null INSERT into student (id,name) VALUES (7,'小九'); #INSERT支持批量插入,每一组值之间都是,分隔 INSERT into student (id,age,classes,name) VALUES (8,12,'三班','小八1'), (9,12,'三班','小八2'), (10,12,'三班','小八3'), (11,12,'三班','小八4'); #按默认字段插入多条数据 INSERT into student VALUES (12,'小1',13,'三班'), (13,'小2',13,'三班'); #插入时主键不能为重复或null,
CREATE TABLE student2( id INT(10) NOT NULL auto_increment, name VARCHAR(10) DEFAULT '不知道', PRIMARY KEY (id) ); #2、表的主键字段是整数并且是字段增长的 ,如果不填,就是默认自动增长 INSERT INTO student2 (name) VALUES ('张三'),('李四'); #1、表的字段是由默认值,如果不给这个字段值,这个字段就是默认值 INSERT INTO student2 (id) VALUES (4);
1、修改一个到多个指定自读那的所有行的值
update 表名 set 字段名=值,字段名=值;
#修改所有行的班级值为大班 UPDATE student SET classes = '大班'; #修改所有行的班级值为大班123,年龄改成16 UPDATE student SET classes = '大班123',age=16;
2、条件修改
update 表名 set 字段名 = 值 where 字段名 = 值;
#有条件的修改,修改id为2的学护士那个的班级为快班,年龄为12 update student SET classes = '快班',age = 12 WHERE id = 2;
3、删除表
#按条件删除,delete from 表名 where 字段名 = 值; #删除id=3 #删除不加数据,就是删除整个表 DELETE FROM student WHERE id = 3; UPDATE student SET age=12 WHERE id =4 #按照条件匹配进行删除 DELETE from student where age = 12;
查询
#查询表的所有列 SELECT * FROM student; #查询表指定的列,多个列用逗号分隔; SELECT name FROM student; # 想用别的表头替换字段的名,可以使用别名,id换成编号。。, SELECT id '编号',name '姓名',age '年龄' FROM student; #合并列查询:想要在一列中栈实班级姓名,表头是 ‘班级-姓名’,内容对应也是一列。 SELECT CONCAT(classes,'-',name) FROM student; #别名 SELECT CONCAT(classes,'-',name) '班级-姓名' FROM student; #算数运算 SELECT name,(mysql+hadoop) '总成绩' FROM student; #查询常量 SELECT name,'橙光' FROM student; SELECT classes from student; #查询时去除重复的值,例如查询班级 SELECT DISTINCT classes FROM student;
1、比较条件
#比较查询,查询年龄大于20的人 SELECT * FROM student WHERE age > 20; SELECT * FROM student WHERE mysql BETWEEN 80 AND 90;
2、逻辑条件
#逻辑查询 #查询在大班123的学生mysql成绩在85分以上的学生,and可以连用 SELECT * FROM student WHERE classes = '大班123' AND mysql > 85; #查询大班1或大版2的学生,OR可以连续使用 SELECT * FROM student WHERE classes = '大班1' or classes = '大班3'; #or 和and可以结合使用 SELECT * FROM student WHERE (classes = '大班123' AND mysql>80) or (classes = '大班1' AND hadoop >90);
3、判空条件
#判空查询 #查询name不是空字符串的数据,<>:代表非,不是且自带not NULL。 SELECT * FROM student WHERE name != ''; SELECT * FROM student WHERE name <>''; #查询年龄部位空或为空 SELECT * FROM student where age IS NULL; SELECT * FROM student where age IS NOT NULL;
4、模糊查询
字段类型为字符串时,查询字段值是否包含哪些字符串。
例如:查询姓张学生都有哪些
符号:
like:包含
not like :不包含
—:匹配0到1个字符串
%:匹配1到多个字符串
#模糊查询 #查询姓名中包含张的学生 SELECT * from student where name LIKE '张%'; #查询以1结尾的学生 SELECT * from student WHERE name like '%1'; #查询性张的学生名字时三个字的 SELECT * FROM student WHERE name LIKE '张__';
5、聚合查询
sum:求和
avg:求平均数
max:最大值
min:最小值
count:计数
#查询mysql SELECT mysql FROM student; #查询mysql分数的总和 SELECT SUM(mysql) FROM student; #统计student表现在有多少数据,COUNT(DISTINCT expr,[expr...])中的参数可以时*,字段,常量 SELECT COUNT(* ) FROM student; #查询大班1的mysql平均成绩 SELECT AVG(mysql) FROM student WHERE classes = '大班1' SELECT AVG(mysql),SUM(hadoop) FROM student WHERE classes = '大班1'
6、排序查询
order by 字段:正序
order by 字段 asc :正序asc可以省略
oreder by 字段 desc :倒叙
#以年龄正序排列 SELECT * from student ORDER BY age; #以年龄正序排列,年龄相同,按mysql成绩排序 SELECT * FROM student ORDER BY age,mysql; #正序和倒序可以混用,以年龄正序排列,年龄相同的以mysql倒叙排列 SELECT * FROM student ORDER BY age,mysql DESC; SELECT * FROM student ORDER BY age DESC,mysql DESC; # 排除age为空 SELECT * FROM student WHERE age is NOT NULL ORDER BY age,mysql DESC