欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL DDL命令大全(数据定义语言)

程序员文章站 2022-03-24 09:38:01
...

一:1.mysql 数据库常用DDL语言:

数据定义语言:即数据库定义语句,用来创建数据库中的表、索引、视图、存储过程、触发器等,常用的语句关键字有:CREATE,ALTER,DROP,TRUNCATE,COMMENT,RENAME。
关于数据库语言分类参考下图:
MySQL  DDL命令大全(数据定义语言)

*注意:CMD命令行使用mysql命令首先需要配置系统的环境变量。具体怎么配置自行百度:(就是把你安装的mysql.exe的安装路径添加到系统的环境变量Path中去)。

A:数据库操作

1.查看当前服务器下全部数据库 :
SHOW DATABASES|SCHEMAS;

  1. show databases; //数据库命令以分号结束
  2. +--------------------+
  3. | Database |
  4. +--------------------+
  5. | information_schema |
  6. | learngit |
  7. | mysql |
  8. | performance_schema |
  9. | sys |
  10. +--------------------+
  11. 5 rows in set (0.00 sec)

2.查看指定数据库的详细信息:
SHOW CREATE DATABASE db_name;

show create database phpcn1; //命令语句
执行结果
MySQL  DDL命令大全(数据定义语言)
*注意:这条命令和查看数据库命令的区别:database与databases;仅差一个字母S注意不要写错!!!

3.切换数据库:USE db_name;

  1. use mysql; //切换sql命令
  2. No connection. Trying to reconnect... //切换结果
  3. Connection id: 7
  4. Current database: *** NONE ***

4.创建数据库 :
CREATE {DATABASE|SCHEMA} db_name;
检测数据库是否存在,不存在则创建
create database if not exists 数据库名
注意:
a.数据库名称最好有意义
b.名称不要包含特殊字符或者是MySQL关键字
create database if not exists phpcn;

创建成功提示:Query OK, 1 row affected (0.00 sec)

5.删除数据库 DROP DATABASE db_name;

如果数据库存在则删除 drop databasae if exists db_name;

  1. mysql> drop database phpcn2; //删除命令
  2. Query OK, 0 rows affected (0.00 sec) //结果

6.修改指定数据库的编码方式
ALTER DATABASE db_name [DEFAULT] CHARACTER SET [=] charset;

  1. mysql> alter database phpcn character set gbk;
  2. Query OK, 1 row affected (0.00 sec)

7.得到当前打开的数据库:
SELECT DATABASE()|SCHEMA();

  1. mysql> select database();
  2. +------------+
  3. | database() |
  4. +------------+
  5. | phpcn1 |
  6. +------------+
  7. 1 row in set (0.00 sec)

B. mysql 数据库常用DML语言:数据定义语言

即数据操纵语句,用来查询、添加、更新、删除等,常用的语句关键字有:SELECT,INSERT,UPDATE,DELETE,MERGE,CALL,EXPLAIN PLAN,LOCK TABLE,包括通用性的增删改查。
1.创建表

  1. CREATE TABLE [IF NOT EXISTS] tbl_name(
  2. 字段名称 字段类型 [完整性约束条件],
  3. 字段名称 字段类型 [完整性约束条件],
  4. ...
  5. )ENGINE=存储引擎 CHARSET=编码方式;
  1. Eg: mysql> CREATE TABLE `users` (
  2. -> `id` int(10) NOT NULL,
  3. -> `name` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  4. -> `password` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  5. -> PRIMARY KEY (`id`)
  6. -> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
  7. Query OK, 0 rows affected (0.06 sec)

2.查看当前数据库存在的表:show tables
Eg:

  1. mysql> show tables;
  2. +------------------+
  3. | Tables_in_phpcn1 |
  4. +------------------+
  5. | users |
  6. +------------------+
  7. 1 row in set (0.00 sec)

3.查看指定数据表的详细信息
SHOW CREATE TABLE tbl_name;

  1. mysql> show create table users
  2. -> ;
  3. +-------+-------------------------+
  4. | Table | Create Table
  5. +-------+------------------------------------+
  6. | users | CREATE TABLE `users` (
  7. `id` int(10) NOT NULL,
  8. `name` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  9. `password` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  10. PRIMARY KEY (`id`)
  11. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |

4.查看表结构

  1. DESC tbl_name;
  2. DESCRIBE tbl_name;
  3. DESCRIBE tbl_name;

5.删除指定的数据表
DROP TABLE [IF EXISTS] tbl_name;

6.表结构相关操作
(1).添加字段
ALTER TABLE tbl_name ADD 字段名称 字段属性 [完整性约束条件] [FIRST|AFTER 字段名称]

  1. mysql> alter table users add gender varchar(20);
  2. Query OK, 0 rows affected (0.45 sec)
  3. Records: 0 Duplicates: 0 Warnings: 0

(2).删除字段: ALTER TABLE tbl_name DROP 字段名称

  1. mysql> alter table users drop gender ;
  2. Query OK, 0 rows affected (0.45 sec)
  3. Records: 0 Duplicates: 0 Warnings: 0

(3).添加默认值:
ALTER TABLE tbl_name ALTER 字段名称 SET DEFAULT 默认值;
(4).删除默认值:
ALTER TABLE tbl_name ALTER 字段名称 DROP DEFAULT
(5).修改字段类型、字段属性
ALTER TABLE tbl_name MODIFY 字段名称 字段类型 [字段属性] [FIRST | AFTER 字段名称]
(6).修改字段名称、字段类型、字段属性
ALTER TABLE tbl_name CHANGE 原字段名称 新字段名称 字段类型 字段属性 [FIRST | AFTER 字段名称]
(7).添加主键
ALTER TABLE tbl_name ADD PRIMARY KEY(字段名称)
(8).删除主键:
ALTER TABLE tbl_name DROP PRIMARY KEY;
(9).添加唯一:
ALTER TABLE tbl_name ADD UNIQUE KEY|INDEX [index_name] (字段名称)
(10).删除唯一:
ALTER TABLE tbl_name DROP index_name;

(11).修改数据表名称:
ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name

RENAME TABLE tbl_name TO new_tbl_name;
(12).修改AUTO_INCREMENT的值
ALTER TABLE tbl_name AUTO_INCREMENT=值

7.查看生成表的sql语句:
show create table student;
8.插入数据
insert into 表名 (字段1, 字段2, 字段3…) values(值1, 值2, 值3…);

insert into 表名 values(值1, 值2, 值3…..); //此方法必须插入表中所有字段的值,并一一对应;

insert into 表名 values(值1, 值2, 值3…), (值1, 值2, 值3…),…(值1, 值2, 值3…); //此方法可以插入多条数据 

9.update 更新,修改数据;
update 表名 set 字段名=新的值 (where 条件); //不加条件会修改所有指定字段的值,可以通过where确定修改指定记录
2.delete 删除数据;
delete from 表名 (where 条件); //此方法删除数据在不加条件时会删除所有的数据,可以通过where确定删除指定记录

truncate table table_name同样可以实现清除表中所有的数据,

虽然TRUNCATE和DELETE都可以删除表的所有记录,但有原理不同。DELETE的效率没有TRUNCATE高!

TRUNCATE其实属性DDL语句,因为它是先DROP TABLE,再CREATE TABLE。而且TRUNCATE删除的记录是无法回滚的,但DELETE删除的记录是可以回滚的(回滚是事务的知识!)。

use在命名空间中的作用:

  1. use 引入别的命名空间到当前空间 as 为引过来的命名空间起别名
    示例文件都在demo.php中;
  1. namespace app\admin\controller;
  2. class Index{
  3. public function index(){
  4. return __METHOD__;
  5. }
  6. }
  7. namespace extend\lib;
  8. //.use 导入命名空间
  9. use app\admin\controller; // 正常引用
  10. echo (new controller\index) ->index();
  11. echo "<hr>";
  12. //use引用 as定义别名
  13. /*成功导入命名空间以后 就可以不使用类的完全限定名称 来调用类元素*/
  14. use app\admin\controller as test;
  15. echo (new test\Index)->index();
  16. echo "<hr>";
  17. //引用空间中的类 并定义别名
  18. use app\admin\controller\Index as test2;
  19. echo (new test2)->index();

2.实现自动加载带有命名空间的类

  1. demo.php 中代码
  2. namespace app;
  3. // 引入类的自动加载器 只是加载类文件
  4. require 'app/admin/autoload.php';
  5. // 起别名
  6. use app\admin\controller\Login;
  7. use app\admin\controller\User;
  8. use app\admin\model\Login as LoginModel;
  9. use app\admin\model\User as UserModel;
  10. $loginController = new Login;
  11. $loginModel = new LoginModel;
  12. $UserModel = new UserModel;
  13. $userController = new User;
  14. echo $userController->index();
  1. autoload.php 自动加载类文件
  2. spl_autoload_register(function($className){
  3. // 先检查要加载的类
  4. // echo $className.'<hr>';
  5. // 将类的命名空间与类文件所在的路径保持一一映射
  6. $file = str_replace('\\',DIRECTORY_SEPARATOR,$className).'.php';
  7. // echo $file;
  8. if(!(is_file($file) && file_exists($file)))
  9. {
  10. throw new \Exception('文件名不合法或者不存在');
  11. }
  12. // require $file;
  13. require $className.'.php';
  14. });