DDL(Data Definition Language)是连接存储世界与现实世界的高铁!
主要用途: 对数据库对象进行创建、修改、删除等操作。 操作对象: 数据库、数据表、列、索引等。 定义命令:
-- IF NOT EXISTS --- 不存在则创建,存在则不创建
CREATE DATABASE IF NOT EXISTS DataScience;
1、查看所有数据库
SHOW DATABASES;
2、删除指定数据库
DROP DATABASE IF EXISTS DataScience;
1、查看数据库字符集
SHOW VARIABLES LIKE'character_set_database';
2、修改数据库字符集
ALTER DATABASE DataScience character SET 'gbk';
USE DataSciecne;
mysql> use
-> datascience;
Query OK, 0 rows affected (0.00 sec)
语法
CREATE TABLE tab_name(
column_name1 type[len],
column_name2 type[len],
......
column_nameN type[len])
PRIMARY KEY (`id`)
[ ENGINE=InnoDB #存储引擎
DEFAULT CHARSET=utf8]; #字符集
创建用户表
CREATE TABLE FansUser(
user_id int not null comment '用户ID',
user_name varchar(30) not null comment '名称',
age int,
tel int not null comment '电话',
sex bit default 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1、查看目前所有数据表
SHOW TABLES;
2、删除指定数据表
DROP TABLE IF EXISTS FansUser;
alter table FansUser rename FansUser1; --修改表名
ALTER TABLE FansUser RENAME User;
||
ALTER TABLE User RENAME To FansUser;
ALTER TABLE FansUser CHANGE COLUMN old_column_name new_column_name varchar(30);--修改表列名
ALTER TABLE User change COLUMN sex status bit(1);
alter table User modify status char(10) --修改表列类型
alter table User change status sex bit(1) -- 修改类型及列名
注意:添加新列如无特殊约束条件,则默认添加到最后一列;如果添加到指定位置,则需要注意约束条件的正确使用。
-- 指定位置
ALTER TABLE user ADD COLUMN remove bit(1) AFTER age;
-- 默认添加
alter table user add column name1 varchar(10); --添加表列
ALTER TABLE user DROP column_name1;
user 表存在,user1 不存在。
-- 要复制的表 在后边。
# like 只是复制表结构
CREATE TABLE user1 LIKE user;
||
-- 通过关键字as
create table user1 as select * from user limit 0;
||
create table user1 select * from user limit 0;
--通过关键字as通过复制另一张表的表结构和数据创建新表
create table user1 as select * from user;
# 根据条件创建表,并且将查询出来得数,存入表中
create table user1 as selecet * from user where age<25;
# 查询部分字段数据
create table user1 as select age,name form user;
索引相当于数据表的目录,其优点是可以提高检索数据的速度,但同时也增加了系统维护工作,以及会减慢写入速度。
索引不适用场景
索引选取类型
索引选取字段
方法一:在创建表时创建索引
CREATE TABLE table_name
column_name1 type[len],
column_name2 type[len],
......
column_nameN type[len])
[UNIQUE/FULLTEXT/SPATIAL] INDEX [index_name](column_name[(length)])
方法二:在已存在的表中创建索引
CREATE [UNIQUE/FULLTEXT/SPATIAL] INDEX index_name
ON table_name(column_name[(length)])
关于length参数:如果是 CHAR,VARCHAR 类型,length 可以小于字段实际长度;如果是 BLOB 和 TEXT 类型,必须指定length。
索引不能修改,想更改索引只能删除后重新创建。
查看:
SHOW INDEX FROM table_name;
删除:
DROP INDEX index_name ON table_name;
今日小练习
1.下面关于查询说法错误的是?(单选)
A.查询执行时先执行主查询再执行子查询
B.子查询中可以包含ORDER BY而不能包含GROUP BY
C.子查询可以引用外部查询表中的列
D.主查询和子查询必须从相同的表中获取数据
2.创建视图A时,若A视图已存在则更新A视图,那么应使用的关键字是?(单选)
A.UODATE B.OR UPDATE
C.REPLACE D.OR REPLA