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