MYSQL

SQL的分类


1、DDL(Data Definition Language) 数据定义语言,用来操作数据库、表、列等; 常用语句:CREATE、 ALTER、DROP
2、DML(Data Manipulation Language) 数据操作语言,用来操作数据库中表里的数据;常用语句:INSERT、 UPDATE、 DELETE
3、DCL(Data Control Language) 数据控制语言,用来操作访问权限和安全级别; 常用语句:GRANT、DENY、REMOVE
4、DQL(Data Query Language) 数据查询语言,用来查询数据 常用语句:SELECT

 

SQL的规则 

- SQL 可以写在一行或者多行。为了提高可读性,各子句分行写,必要时使用缩进

- 每条命令以 ; 或 \g 或 \G 结束

- 关键字不能被缩写也不能分行

- 关于标点符号

  - 必须保证所有的()、单引号、双引号是成对结束的

  - 必须使用英文状态下的半角输入方式

  - 字符串型和日期时间类型的数据可以使用单引号(' ')表示

  - 列的别名,尽量使用双引号(" "),而且不建议省略as

SQL的规范  

- MySQL 在 Windows 环境下是大小写不敏感的

- MySQL 在 Linux 环境下是大小写敏感的

  - 数据库名、表名、表的别名、变量名是严格区分大小写的

  - 关键字、函数名、列名(或字段名)、列的别名(字段的别名) 是忽略大小写的。

- 推荐采用统一的书写规范:

  - 数据库名、表名、表别名、字段名、字段别名等都小写

  - SQL 关键字、函数名、绑定变量等都大写

 MySQL的三种注释的方式

*/

USE dbtest2;

-- 这是一个查询语句
SELECT * FROM emp;

INSERT INTO emp 
VALUES(1002,'Tom'); #字符串、日期时间类型的变量需要使用一对''表示

INSERT INTO emp 
VALUES(1003,'Jerry');

# SELECT * FROM emp\G

SHOW CREATE TABLE emp\g

/*

*/ 这是一个多行注释 /*

-- 这是一个单行注释(--之后需要添加空格)

#这也是一个单行注释(MySQL特有的方式)

导入现有的数据表、表的数据。

方式1:source 文件的全路径名

举例:source d:\atguigudb.sql;


 

方式2:基于具体的图形化界面的工具可以导入数据

比如:SQLyog中 选择 “工具” -- “执行sql脚本” -- 选中xxx.sql即可。

 

1.01 创建数据库

create database theFirstdb;

1.02 查看数据库

show databases;

1.03 显示创建的数据库

show create database theFirstdb;

1.04 选择数据库

use theFirstdb;

1.05 删库跑路

drop database theFirstdb;

MySQL数据库表结构的操作

2.01 创建数据表

基本语法格式

CREATE TABLE [IF NOT EXISTS]表名

(字段名1 数据类型 约束,

  .....

   字段名n 数据类型 约束

)[其他选项];

在theFirstdb 创建一个名为users的用户表

create table users
(
    uid int not null primary key auto_increment,
    name varchar(20) not null unique,
    pwd varchar(20) not null,
    sex char(2)
)engine=InnoDB;

约束字段常用关键字。

1.AUTO_INCREMENT

该属性用于设置整数类型字段的自动增量 AUTO_INCREMENT字段 必须被索引,且必须为NOT_NULL。每个表最多只能有一个字段具有AUTO_INCREMENT属性

2.DEFAULT

DEFAULT 属性是指表中添加新行时给表中某一字段指定默认值。

使用DEFAULT定义,一是可以避免NOT NULL 值的数据错误 ,二是加快数据录入

3.NOT NULL 

指定NOT NULL属性的字段,不能有NULL值。当添加或修改数据时设置了 NOT NULL属性的字段值不允许为空,必须存在具体的值

4.UNSIGNED

表示该值不能为负数。

5.PRIMARY KEY

主键 可以是一行或多行字段 非空且唯一

下面是两种创建主键的方法

create table test(
    uid int not null primary key
        );
create table test(
    uid int not null,
        primary key (uid)
    );

6.UNIQUE

UNIQUE唯一检索通过在列中不输入重复值来保证一个字段或多个字段的数据完整性,在同一个表中可以创建多个UNIQUE列

7.FOREIGN KEY

FOREIGN KEY 定义了表之间的关系 维护两个表之间的数据一致性和增强表与表之间的参照完整性

在子表中定义外键的语法约束如下

[CONSTRAINT 约束名]FOREIGN KEY(字段名)

REFERENCES 父表名 (字段名)

[ON DELETE 级联选项][ON UPDATE 级联选项]

2.02 查看当前数据库中可用的表 

show tables;

2.03查看数据库表结构

describe users;
show columns from users;

2.04修改表结构

修改表名

ALTER TABLE 原表名 RENAME TO 新表名;

RENAME TABLE 原表名 TO 新表名;

alter table users rename to tbl_users;

rename table users to tbl_users;

语法格式如下

ALTER TABLE 表名 ACTION,...

其中,每个动作(ACTION)是指对表所做的修改 

例如,为users添加一个address字段

alter table users add address varchar(50)not null;

在指定字段后添加字段

在sex字段后添加phone字段

alter table users add phone varchar(20) not null after sex;

修改字段

使用CHANGE或MODIFY

语法格式

ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型;

ALTER TABLE 表名 MODIFY 字段名 数据类型;

例如 修改users表中的phone字段,将 数据类型由vachar修改为int,并设置默认值为0

alter table users change phone phone int unsigned default 0;
alter table users modify phone int unsigned default 0;

删除字段

ALTER TABLE 表名 DROP 字段名;

alter table users drop address;

修改约束条件

(1)添加约束条件

ALTER TABLE 表名 ADD CONSTARAINT 约束名 约束类型 (字段名);

例如,向users的telephone字段添加唯一性约束,且约束名为phone_unique,可以使用下面的SQL语句。

alter table users add constraint phone_uniquue unique(telephone);

向orders的uid字段添加外键约束,且约束名为fk_orders_users,可以使用下面的SQL语句

alter table users add constraint fk_orders_users foreign key(uid)references users(uid);

向表中添加约束条件时,要保证表中已有记录满足新的约束条件

(2)删除约束条件

删除主键约束

ALTER TABLE 表名 DROP PRIMARY KEY;

alter table orders drop primary key;

删除表的外键约束

ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名;

alter table orders drop foreign key fk_orders_users;

删除字段的唯一性约束,删除字段的唯一性索引

ALTER TABLE 表名 DROP INDEX 唯一索引名

删除users的telephone字段的唯一性索引

alter table users drop index phone_unique;

修改表的其他选项

ALTER TABLE 表名 ENGINE=新的存储引擎类型;

ALTER TABLE 表名 DEFAULT CHARSET=新的字符集;

将users表的存储引擎修改为MyISAM,默认字符集设置为UTF8

alter table users engine=MyISAM;
alter table users default charset=uft8;

删除数据库表

DROP TABLE [IF EXISTS] 表名 1 [,表名2];

drop table users;

无法删除一个不存在的表

当试图删除一个不存在的表时,会报错!!!

如何解决? 添加 if exists 字句

drop table if exists orders;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值