-- *** ①、對數(shù)據(jù)庫的操作 *** --
-- 查看所有的數(shù)據(jù)庫
SHOW DATABASES;
-- 創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE day1026
DEFAULT CHARACTER SET utf8;
-- 查看該數(shù)據(jù)庫的所有表
SHOW TABLES;
-- 使用剛建的數(shù)據(jù)庫
USE day1026;
-- *** ②、對表的操作 *** --
-- 創(chuàng)建表
CREATE TABLE personnel
(
id INT,
NAME VARCHAR(20),
gender VARCHAR(2),
birthday DATE,
email VARCHAR(10),
remark VARCHAR(50)
);
-- 查看指定表的結(jié)構(gòu)
DESC personnel;
-- 修改表的名稱
ALTER TABLE personnel RENAME TO teachr;
ALTER TABLE teachr RENAME TO personnel;
-- *** ③、對列的操作 *** --
-- 在表中增加列
ALTER TABLE personnel ADD COLUMN age VARCHAR(3);
-- 修改列的長度
ALTER TABLE personnel MODIFY remark VARCHAR(50);
-- 刪除列
ALTER TABLE personnel DROP COLUMN remark;
-- 修改列的名稱
ALTER TABLE personnel CHANGE NAME username VARCHAR(20);
-- *** ④、對數(shù)據(jù)的操作 *** --
-- (為了方便,另外創(chuàng)建個少列的表)
CREATE TABLE person(
id VARCHAR(20),
NAME VARCHAR(10),
age INT,
sex VARCHAR(5)
);
DESC person;
-- ④.1:添加數(shù)據(jù) (按照順序插入所有字段)
INSERT INTO person VALUES(1,'張三',20,'男');
-- 添加數(shù)據(jù) (部分?jǐn)?shù)據(jù))
INSERT INTO person (id,NAME,age) VALUES (2,'李四',21);
INSERT INTO person (NAME)VALUES ('王五');
-- 修改數(shù)據(jù)(所有數(shù)據(jù),建議少用)
UPDATE person SET sex = '女';
-- 修改指定的數(shù)據(jù)(推薦使用)
UPDATE person SET sex = '男' WHERE id = 1; -- 把id為1那位的性別改為男
-- 修改多個字段,注意: SET 字段名=值,字段名=值,....
UPDATE person SET sex = '女' ,age = 20 WHERE NAME = '王五';
-- 把王五的性別改為男,年齡改為20
-- ④.2、刪除數(shù)據(jù)
-- 刪除數(shù)據(jù)(所有的數(shù)據(jù),少用)
DELETE FROM person;
-- 帶條件的刪除(推薦使用)
DELETE FROM person WHERE id = 1;
-- 另一種刪除方式(全部刪除)
TRUNCATE person;
-- delete from: 1)可以全表刪除 ,可以帶條件刪除 2)只能刪除表的數(shù)據(jù),不能刪除表的約束 3)使用delete from刪除的數(shù)據(jù)可以回滾(事務(wù))
-- truncate table: 1)可以全表刪除,不能帶條件刪除 2)即可以刪除表的數(shù)據(jù),也可以刪除表的約束 3)使用truncate table刪除的數(shù)據(jù)不能回滾
TRUNCATE TABLE student;
-- 建立一個帶有自增長的數(shù)據(jù)的表
CREATE TABLE test(
id INT PRIMARY KEY AUTO_INCREMENT,-- 自增
NAME VARCHAR(10)
);
-- 添加數(shù)據(jù),但不添加id的
INSERT INTO test (NAME) VALUES('張三');
INSERT INTO test (NAME) VALUES('李四');
-- 可以發(fā)現(xiàn),自動賦予id且自增 1、2
-- 如果用delete from 刪除,再進(jìn)行添加數(shù)據(jù),那么id會為3,也就是回滾,數(shù)據(jù)可以恢復(fù)的
-- 如果是用truncate 刪除,再進(jìn)行添加數(shù)據(jù),那么id從1開始,無法回滾,數(shù)據(jù)無法恢復(fù)
-- 查看所有列的數(shù)據(jù)
SELECT *FROM person;
SELECT *FROM test;
-- *** ⑤、查詢數(shù)據(jù) *** --
-- 5.1 查詢所有列
SELECT *FROM person;
-- 5.2 查詢指定列
SELECT id,NAME FROM person;
-- 5.3、查詢時可以指定別名 (表的別名不能是字符串)
-- 注意:在多表查詢時經(jīng)常使用表的別名
SELECT id AS '身份證', NAME AS '姓名' FROM person AS s;
-- 使用了別名后,就可以用別名來查詢它的數(shù)據(jù)
-- 5.4、查詢時添加常量列
-- 需求:在查詢person表時,添加一列住址列:內(nèi)容為“中國”
SELECT id,NAME,age,sex,'中國' AS China FROM person;
-- 5.5、查詢時合并列
-- 首先給這個表創(chuàng)建2個列,以便示范
ALTER TABLE person ADD java INT ,ADD c INT;
UPDATE person SET java = 80, c = 80 WHERE id = 2;
-- 查詢每個人的java和c的總成績
SELECT id,NAME,(java+c) AS '總成績' FROM person;
-- 注意:合并列只能合并數(shù)值類型的字段
-- 5.6、查詢時去除重復(fù)記錄
SELECT sex FROM person; -- 這樣的話,會列出女、男、男這樣的數(shù)據(jù)
-- 需求: 查詢數(shù)據(jù)內(nèi)有什么性別
-- 方法1:
SELECT DISTINCT sex FROM person; -- 如果數(shù)據(jù)內(nèi)只有男,則只顯示1個男,如果男女都有,則顯示兩個:男、女
-- 方法2:查詢有什么年齡
SELECT DISTINCT (age) FROM person;
-- 5.7、條件查詢 (where)
-- 5.7.1 邏輯條件: and(與) or(或)
-- and(與):查詢id為2,姓名為李四的人的信息
SELECT * FROM person WHERE id = 2 AND NAME = '李四';
-- or(或):查詢id為1,或者姓名是張三的人的信息
SELECT * FROM person WHERE id = 2 OR NAME = '張三';
-- 5.7.2 比較條件: > 、< 、>= 、<= 、<>(不等于)、between and
-- 查詢java成績大于等于80,且小于等于90的人
SELECT * FROM person WHERE java >=80 AND java <= 90;
-- 另外一種語法
SELECT * FROM person WHERE java BETWEEN 80 AND 90;-- 包左包右
-- 查詢不是男的0的人
SELECT * FROM person WHERE sex <>'男';
-- 5.7.3 判空條件:(null 空字符串): is null / is not null / =='' / <>''
-- null 和 空字符串 的區(qū)別:
-- null:沒有值
-- 空字符串:有值,是空字符串
-- 查詢性別為null的人(當(dāng)時沒賦值)
SELECT * FROM person WHERE sex IS NULL;
-- 查詢性別為空字符串的人
SELECT * FROM person WHERE sex IS '';
SELECT * FROM person WHERE sex IS NULL OR sex IS '';
-- 查詢填寫了性別的人(非null和非空)
SELECT * FROM person WHERE sex IS NOT NULL AND sex <>'';
-- 5.7.4 模糊條件:like
-- 通常使用這些替換標(biāo)識符:
-- %:替換任意個數(shù)字符
-- _:替換一個字符
-- 查詢姓‘張’的人
SELECT * FROM person WHERE NAME LIKE '張%';
-- 查詢姓‘李’并且姓名只有兩個字的人
SELECT * FROM person WHERE NAME LIKE '張_';