1、SQL规范
- SQL语句不区分大小写,建议SQL关键字大写,表名和列表小写
- 命令用分号结尾
- 命令可以缩进和换行,一种类型的关键字放在一行
- 可以写单行和多行注释 , #和--是单行注释,/***/多行注释
insert into student(name,idcard,age,city) values('张三','1234561',10,'北京');
insert into student(name,idcard,age,city) values('李四','6',20,'广州');
select * from student WHERE id=1 OR name='李四';
-- insert 注意事项 每次插入一条数据
-- update 更新
-- 1、可以一次更新多列 用逗号隔开 2、可以指定更新的条件 如果更新前和更新后的值是一样的,就不更新,mysql自己做的优化
UPDATE student SET age=40,city='上海' WHERE id=1 OR name='李四';
-- 删除
-- 删除是整行删除 不需要提供列名
-- 如果删除的是主表,那需要先删除子表 插的时候,先插主表 再插子表
DELETE FROM student WHERE id=2;
-- TRUNCATE 截断表
-- TRUNCATE 重置标识种子 不写入日志 没有备份
TRUNCATE table student;
-- 会写入目录 可以恢复
DELETE FROM student
-- 查询语句
-- 查询北京的同学信息 并按id正序排列
select id,name FROM student WHERE city='北京' ORDER BY id DSC
-- 别名
select id,name,city AS home FROM student WHERE city='北京' ORDER BY id DESC
-- 如何查询空行
insert into student(name,idcard,age,city) values('陈七','7',7,'北京');
select * from student WHERE level IS NULL
-- 常量列
select id,name,city,'中国' as country FROM student WHERE city='北京' ORDER BY id DESC
-- 分页 从0开始,取3条。
select id,name,city FROM student limit 0,3
-- 查询同学们都来自哪些不同的城市
select DISTINCT city from student
-- +sql中的加法 只能用来加数字。
select 1+1
select 1+'1'
select 1+'a' -- 1 如果不是一个数字 也转化不成为数字 那就是0
select 'b'+'a' -- 0
select CONCAT('a','b','c',1) -- 字符串就要用concat来连接
ALTER TABLE `student`
ADD COLUMN `province` varchar(50) NULL AFTER `city`,
ADD COLUMN `birthday` date NULL AFTER `province`,
ADD COLUMN `gender` int(11) NULL AFTER `birthday`,
ADD COLUMN `email` varchar(50) NULL AFTER `gender`;
TRUNCATE student
INSERT INTO `course` VALUES ('1', '语文');
INSERT INTO `course` VALUES ('2', '数学');
INSERT INTO `course` VALUES ('3', '英语');
INSERT INTO `score` VALUES ('1', '1', '100');
INSERT INTO `score` VALUES ('1', '2', '90');
INSERT INTO `score` VALUES ('1', '3', '70');
INSERT INTO `score` VALUES ('2', '1', '100');
INSERT INTO `score` VALUES ('2', '2', '90');
INSERT INTO `score` VALUES ('2', '3', '80');
INSERT INTO `score` VALUES ('3', '1', '100');
INSERT INTO `score` VALUES ('3', '2', '90');
INSERT INTO `score` VALUES ('3', '3', '80');
select * from student where province ='山东省' And gender=1;
-- 查询没有填写电子邮件
select name,idcard from student where email is NULL
-- 把学生的分数升序排列
select * from score ORDER BY grade ASC
-- 课程编号升序 分数降序
select * from score ORDER BY course_id ASC,grade DESC
-- 模糊匹配
-- 模糊查询 name like _ 和%
select * from student Where name like '郭_';
select * from student;
select CONCAT_WS('-',province,city) from student;
select left('message',3);
select right('message',3);
-- 从第四位开始截取 截取2位。
select SUBSTR('message' from 4 for 2);
select SUBSTR('message' from 4);
select SUBSTR('message' 4,2);
-- indexof 子串在父串中的索引
select INSTR('message','age');
-- 姓名的首字母大写 其它字符小写 然后用_拼接
create table t(name varchar(64))
insert into t(name) values('messAge');
select
CONCAT_WS('_',UPPER(SUBSTR(name,1,4)),LOWER(SUBSTR(name,5)))
from t
-- 如何去除空格
SELECT trim(' message ');
SELECT ltrim(' message ');
SELECT rtrim(' message ');
-- padding 补齐位数
select lpad('message',10,'0');
select rpad('message',10,'0');
select lpad('11',2,0);
-- 替换
select replace('message','mes','doggggggg');
-- fromat 格式化 数字的格式化 保留2位小数
select FORMAT(100000,2)
-- 数学函数 四舍五入 去尾法
SELECT ROUND(2.5);
SELECT ROUND(2.555,2);
SELECT DIV(3,3);
SELECT NOW(); -- 时间 时分秒
SELECT CURDATE(); -- 日期
SELECT CURTIME(); --时间
select YEAR(now());
select MONTH(now())
select day(now())
select hour(now())
select STR_TO_DATE('09-09-2018','%m-%d-%y')