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