1. 程式人生 > >mysql資料定義語言(DDL)庫和表(建立庫、建立表)

mysql資料定義語言(DDL)庫和表(建立庫、建立表)

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 = '中國';