SQL语句之DDL

DDL:Databse Definition Language

创建数据库

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification]

create_specification:

[DEFAULT] CHARACTER SET [=] charset_name

[DEFAULT] COLLATE [=] collation_name

example1:

查看字符集gbk,和gbk支持的排序规则

mysql> show character set like ‘gbk‘;

+---------+------------------------+-------------------+--------+

| Charset | Description            | Default collation | Maxlen |

+---------+------------------------+-------------------+--------+

| gbk     | GBK Simplified Chinese | gbk_chinese_ci    |      2 |

+---------+------------------------+-------------------+--------+

mysql> show collation like ‘gbk%‘;

+----------------+---------+----+---------+----------+---------+

| Collation      | Charset | Id | Default | Compiled | Sortlen |

+----------------+---------+----+---------+----------+---------+

| gbk_chinese_ci | gbk     | 28 | Yes     | Yes      |       1 |

| gbk_bin        | gbk     | 87 |         | Yes      |       1 |

+----------------+---------+----+---------+----------+---------+

mysql> create database if not exists students default character set = ‘gbk‘ default collate = ‘gbk_chinese_ci‘;

Query OK, 1 row affected (0.00 sec)

# cat db.opt 默认字符集和排序规则

default-character-set=gbk

default-collation=gbk_chinese_ci

怎样查看数据库的属性



修改数据库

ALTER {DATABASE | SCHEMA} [db_name] alter_specification

ALTER {DATABASE | SCHEMA} db_name UPGRADE DATA DIRECTORY NAME 升级数据库

alter_specification:

[DEFAULT] CHARACTER SET [=] charset_name

| [DEFAULT] COLLATE [=] collation_name

删除数据库

DROP {DATABASE | SCHEMA} [IF EXISTS] db_name

数据库重命名

修改数据库文件下的目录名称,或者新建目录后复制数据,重启mysql服务器少用



创建表的方式

查看表的属性

mysql> show table status like ‘lesson‘\G

1、直接定义一张空表;

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name(create_definition,...) [table_options] [partition_options]

example2:

CREATE TABLE tb1 (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, Name CHAR(20) NOT NULL, Age TINYINT NOT NULL)  ENGINE [=] engine_name

CREATE TABLE tb2 (id INT UNSIGNED NOT NULL AUTO_INCREMENT, Name CHAR(20) NOT NULL, Age TINYINT NOT NULL, PRIMARY KEY(id),UNIQUE KEY(name),INDEX(age))

mysql> create table course(course_id tinyint unsigned not null primary key,course_name char(20) not null) engine=MyISAM;

mysql> create table lesson(course_id tinyint unsigned not null auto_increment primary key,course_name char(20) not null) engine=MyISAM; auto_increment位置

mysql> insert into lesson(course_name) value (‘English‘),(‘Maths‘),(‘Music‘),(‘Physics‘),(‘Chemical‘); 填入内容

mysql> select * from lesson; 查看表内容

mysql> show indexes from course\G 查看索引

2、从其它表中查询出数据,并以之创建新表;字段属性可能会改变

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name[(create_definition,...)] [table_options] [partition_options] select_statement

example3:

mysql> create table lesson_1 select * from lesson where course_id <= 3;

3、以其它表为模板创建一个空表;字段属性保持不变

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name { LIKE old_tbl_name | (LIKE old_tbl_name) }

example3:

mysql> create table test like course;

键也称作约束,可用作索引,属于特殊索引(有特殊限定):B+Tree

如何查看表的字段? desc 表名

table_option:

ENGINE [=] engine_name |

AUTO_INCREMENT [=] value |

CHECKSUM [=] {0 | 1} |

DELAY_KEY_WRITE [=] {0 | 1} |

MAX_ROWS [=] value |

[DEFAULT] CHARACTER SET [=] charset_name |

[DEFAULT] COLLATE [=] collation_name

单字段:

PRIMARY KEY

UNIQUE KEY

单或多字段:

PRAMARY KEY (col,...)

UNIQUE KEY (col,...)

INDEX (col,...)


修改表定义

ALTER TABLE

添加、删除、修改字段

添加、删除、修改索引

改表名

修改表属性

ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name [alter_specification [, alter_specification] ...] [partition_options]

alter_specification:

table_options

| ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name ]

| ADD [COLUMN] (col_name column_definition,...)

example5:

mysql> alter table lesson add starttime date default ‘2016-06-07‘;

| ADD {INDEX|KEY} [index_name] [index_type] (index_col_name,...) [index_option] ...

| ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) [index_option] ...

| ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...) [index_option] ...

example5:

mysql> alter table test1 add unique key (course_name);

| ADD FULLTEXT [INDEX|KEY] [index_name] (index_col_name,...) [index_option] ...

| ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition

| CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]

example6:注意使用字段定义

mysql> alter table test1 change course_name lesson_name char(20) not null;

| MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]

| DROP [COLUMN] col_name

| DROP PRIMARY KEY

| DROP {INDEX|KEY} index_name

如何删除unique ?

| RENAME [TO|AS] new_tbl_name

example7:

mysql> alter table test1 rename to test;

mysql> rename table test to test_1;

| ORDER BY col_name [, col_name] ...

| CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]

| [DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=] collation_name

example

mysql> create table students(student_id tinyint unsigned not null auto_increment primary key,name char(20) not null,course_id tinyint not null);

mysql> insert into students (name,course_id) value (‘Yang‘,2),(‘Zhang‘,3),(‘Wang‘,1);

mysql> select name,course_name from lesson,students where lesson.course_id=students.course_id;

+-------+-------------+

| name  | course_name |

+-------+-------------+

| Yang  | Maths       |

| Zhang | Music       |

| Wang  | English     |

+-------+-------------+


删除表

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CASCADE]级联,危险

InnoDB支持外键

mysql> alter table students add foreign key foreign_cid (course_id) references lesson (course_id);

ERROR 1005 (HY000): Can‘t create table ‘students.#sql-500b_8‘ (errno: 150)

mysql> alter table lesson engine=InnoDB;


索引创建:

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name ON tbl_name (index_col_name [(length)] [ASC | DESC],...) 【升序|降序】

删除索引:

DROP [ONLINE|OFFLINE] INDEX index_name ON tbl_name

DROP INDEX `PRIMARY` ON t;

example

mysql> create index index_on_name on students (name);

mysql> drop index index_on_name on students;

mysql> create index index_on_name on students (name (5) desc);

查看索引

SHOW INDEXES FROM tb_name:显示指定表上的索引

来自为知笔记(Wiz)

时间: 2024-08-05 19:18:10

SQL语句之DDL的相关文章

SQL语句 DML,DDL,DCL

数据控制语言(DCL)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT.DENY.REVOKE等语句,在默认状态下,只有 sysadmin.dbcreator.db_owner或db_securityadmin等角色的成员才有权利执行数据控制语言. GRANT语句是授权语句,它可以把语句权限或者对象权限授予给其他用户和角色. DENY语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限. REVOKE语句是与GRANT语句相反的语句,它

SQL概念及DDL语句

SQL概念 SQL全称(Structured Query Language):结构化查询语句,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询和管理关系型数据库. 其实就是定义了所有关系型数据库的规则.但是每一种数据库的sql语句操作方式存在不一样的地方,也把这种不一样的地方称为该数据库的'方言' SQL通用语句 SQL语句可以单行或多行书写,以分号结尾 可以使用空格和缩进来增强语句的可读性 MySQL数据库的SQL 语句不区分大小写, 关键字建议大写 注释 单行注

java链接数据库构建sql语句的时候容易记混的地方

Connection conn = DBHelper.getconnection(); //封装连接数据库的工具类 String sql = "select * from t_test"; Statement stm = conn.createStatement(); ResultSet rs = stm.executeQuery(sql); Connection conn = DBHelper.getconnection(); //封装连接数据库的工具类 String sql = &

慢谈MYSQL常用SQL语句

目录 1.SQL语句分类 2.DDL语句 3.DML语句 4.DCL语句 5.事务相关语句 6.mysql查询 6.1.单表简单查询 6.2.多表组合查询 6.2.1.联结查询(交叉联结,内联结,外联结(左外联结.右外联结)) 6.2.2.联合查询(UNION) 6.2.3.自联结 6.3.子查询 6.3.1.WHERE子查询 6.3.2.FROM子查询 1.SQL语句分类 DDL:数据定义语言,用来定义数据库对象,包括数据库.表.索引.存储过程.存储函数.约束.触发器.事件调度器等 DML:数

PL/SQL可用的SQL语句

PL/SQL是ORACLE系统的核心语言 ,现在ORACLE的许多部件都是用PL/SQL写成.在PL/SQL中可以使用的语句有: INSERT,DELETE,UPDATE,SELECT,SELECT INTO,COMMIT,ROLLBACK,SAVEPOINT. ps:PL/SQL中不能SQL语句的DDL部分,只能用SQL语句的DML部分.如果要在PL/SQL中用SQL的DDL部分,则需要用动态模式来使用.否则会报ORA-06550错误 PL/SQL可用的SQL语句

6 Mysql SQL语句速记

一.SQL语句分类 DDL Data Definition Language    数据定义语言  #定义数据库结构.对数据库本身进行操作,修改. CREATE:在数据库中创建对象 ALTER:修改数据库结构 DROP:删除对象 RENAME:重命名对象 DML  Data Manipulation Language   数据操作护语言   #操作数据库内容 SELECT:从数据库中获取数据 INSERT:向一个表格中插入数据 UPDATE:更新一个表格中的已有数据 DELETE:删除表格中的数

动态SQL语句

动态SQL语句不仅是指SQL语句是动态拼接而成的,更主要的是SQL语句所使用的对象也是在运行时期才能创建的. 动态SQL语句基础 create or replace function get_tablecount(table_name in varchar2) return pls_integer is sql_query varchar2(32767):='select count(*) from'||table_name; l_return  pls_integer; begin execu

[独孤九剑]Oracle知识点梳理(四)SQL语句之DML和DDL

本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracle知识点梳理(五)数据库常用对象之Table.View [独孤九剑]Oracle知识点梳理(六)数据库常用对象之Procedure.function.Sequence [独孤九剑]Oracle知识点梳理(七)数据库常用对象之Cursor [独孤九剑]Oracle知识点梳理(八)常见Exception

Orecle Mysql 基本sql语句DDL & DML 介绍与总结 by 冰琉璃

先给大家普及一下安装mysql的简易方法:yum yum search mysql (查找关于mysql的内容) 找到后需要安装3个内容 mysql.i386 mysql-server.i386 mysql-devel.i386 安装过后 service mysqld start (启动mysql服务) 进入mysql mysql -h -u root -p 密码直接回车 开始密码为默然:以后可以在mysql里面改密码或者创建账号等操作 Mysql的sql语句大致分为4种  DDL (定义语句)