mysql資料定義語言(DDL)庫和表(建立庫、建立表)
阿新 • • 發佈:2019-01-06
mysql資料定義語言(DDL)庫和表(建立庫、建立表)
我就直接po截圖和程式碼了,程式碼中有註釋
# SHOW VARIABLES WHERE variable_name = 'datadir'; SHOW VARIABLES WHERE variable_name LIKE '%datadir%'; SHOW VARIABLES WHERE variable_name LIKE '%cha%'; SHOW VARIABLES LIKE 'version'; SHOW VARIABLES LIKE 'datadir'; SHOW VARIABLES LIKE '%datadir%'; SHOW VARIABLES LIKE '%cha%'; # #DDL /* 資料定義語言 庫和表的管理 一、庫的管理 建立、修改、刪除 二、表的管理 建立、修改、刪除 建立: create 修改: alter 刪除: drop */ #一、庫的管理 #1、庫的建立 /* 語法: create database [if not exists]庫名; */ #案例:建立庫shoppingCart CREATE DATABASE shoppingCart; #如果庫不存在,就建立,如果庫存在,就不建立了(容錯性處理) CREATE DATABASE IF NOT EXISTS shoppingCart; #2、庫的修改 #這句話舊版本可以使用,但是在新版本中已經廢棄了,因為這句話不夠安全 #注意:一般別去改庫名,別沒事給自己找麻煩 RENAME DATABASE shoppingCart TO 新庫名; #更改庫的字符集(修改完資料庫字符集,需要重啟mysql資料庫) ALTER DATABASE shoppingCart CHARACTER SET utf8; #3、庫的刪除 DROP DATABASE shoppingCart; # DROP DATABASE IF EXISTS shoppingCart; #二、表的管理 #1.表的建立 ★ /* 語法: create table 表名( 列名 列的型別【(長度) 約束】, 列名 列的型別【(長度) 約束】, 列名 列的型別【(長度) 約束】, ... 列名 列的型別【(長度) 約束】 ); */ #案例:建立表Book CREATE TABLE Book( id INT, #編號 bName VARCHAR(30), #書名 price DOUBLE, #價格 authorId INT, #作者編號 publishDate DATETIME #出版日期 ); #查看錶結構 DESC Book; #案例:建立表author CREATE TABLE author( id INT, aName VARCHAR(25), nation VARCHAR(80) ); #建立表時,容錯性處理 CREATE TABLE IF NOT EXISTS author( id INT, aName VARCHAR(25), nation VARCHAR(80) ); #查看錶結構 DESC author; #2.表的修改 /* 語法 alter table 表名 add|drop|modify|change column 列名 【列型別 約束】; */ #1.修改列名 ALTER TABLE Book CHANGE COLUMN publishDate pubDate DATETIME; # #修改列名,COLUMN關鍵字可以省略,建議不要省略 ALTER TABLE Book CHANGE publishDate pubDate DATETIME; #2.修改列的型別或約束,COLUMN關鍵字可以省略,建議不要省略 ALTER TABLE Book MODIFY COLUMN pubDate TIMESTAMP; #3.新增新列 ALTER TABLE author ADD COLUMN annual DOUBLE; #4.刪除列 ALTER TABLE author DROP COLUMN annual; # CREATE TABLE mytest( t1 INT, t2 INT, t3 INT, t4 INT ); # DESC mytest; #FIRST和AFTER這2個關鍵字是在新增新列的時候,表示新增到哪個位置,這2個關鍵字用的比較少 #新增新列,預設是加到最後的位置 #FIRST關鍵字的作用是,把這個新列插入到最前面 ALTER TABLE mytest ADD COLUMN newt1 INT FIRST; #AFTER關鍵字的作用是,把這個新列插入到t2列的後面 ALTER TABLE mytest ADD COLUMN newt2 INT AFTER t2; #5.修改表名,TO可以省略 ALTER TABLE author RENAME TO myAuthor; # DESC Book; # DESC author; #3.表的刪除 DROP TABLE author; # DROP TABLE IF EXISTS book; #檢視當前庫的所有表 SHOW TABLES; #通用的寫法: DROP DATABASE IF EXISTS 舊庫名; CREATE DATABASE 新庫名; DROP TABLE IF EXISTS 舊錶名; CREATE TABLE 新表名(列名 列的型別【(長度) 約束】, ......); #4.表的複製 INSERT INTO author VALUES (1, '吳承恩', '中國'), (2, '施耐庵', '中國'), (3, '曹雪芹', '中國'), (4, '羅貫中', '中國'), (5, 'JK羅琳', '美國'), (6, '村上春樹', '日本'); #清空表 TRUNCATE TABLE author; # SELECT * FROM author; #1.僅僅複製表的結構 CREATE TABLE author2 LIKE author; # SELECT * FROM author2; #2.複製表的結構+資料 CREATE TABLE author3 SELECT * FROM author; # SELECT * FROM author3; #3.複製表的結構,不要表中的資料 CREATE TABLE author4 SELECT * FROM author WHERE 666 = 888; # SELECT * FROM author4; #只複製部分資料 CREATE TABLE author5 SELECT * FROM author WHERE nation = '中國'; # SELECT * FROM author5; #只複製部分列和部分資料 CREATE TABLE author6 SELECT author.`aName`, author.`nation` FROM author WHERE nation = '中國'; # SELECT * FROM author6; #只複製部分列,並且不要資料 CREATE TABLE author7 SELECT author.`aName`, author.`id` FROM author WHERE 119 = 110; #或者直接在WHERE後面寫個0零 CREATE TABLE author8 SELECT author.`aName`, author.`id` FROM author WHERE 0; # SELECT * FROM author7; SELECT * FROM author8; #可以加IF NOT EXISTS提高容錯性 CREATE TABLE IF NOT EXISTS author9 SELECT author.`aName`, author.`id` FROM author WHERE nation = '中國'; # SELECT * FROM author9; # #注意:0表示FALSE,非0表示TRUE #0表示FALSE假 SELECT * FROM author WHERE 0; #1表示TRUE真 SELECT * FROM author WHERE 1; #非0零,表示TRUE真 SELECT * FROM author WHERE 666; #非0零,表示TRUE真 SELECT * FROM author WHERE 888; # CREATE TABLE IF NOT EXISTS author20181227( id INT, aName VARCHAR(25), nation VARCHAR(80), age INT, hobby VARCHAR(200), salary DOUBLE, birthday DATETIME ); # SELECT * FROM author20181227; #把某張表中查詢到的結果集插入到另一張表中(注意:另一張表指的是已經存在的表) #INSERT INTO後面跟的SELECT語句,你可以理解成是一個子查詢 INSERT INTO author20181227(aName, nation, id) SELECT author.`aName`, author.`nation`, author.`id` FROM author WHERE nation = '中國';