最美的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')

 

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