最美的sql,mysql的常用练习

1、SQL规范

  1. SQL语句不区分大小写,建议SQL关键字大写,表名和列表小写
  2. 命令用分号结尾
  3. 命令可以缩进和换行,一种类型的关键字放在一行
  4. 可以写单行和多行注释 , #和--是单行注释,/***/多行注释

 

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')

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章