数据库SQL语句的使用

本文详细介绍了MySQL中的SQL语句使用,包括DDL语句、外键、联接查询(内联接和外联接)、索引、函数、数据库事务、锁的规则以及触发器和视图的创建和管理。内容涵盖了从基本的数据库操作到复杂的查询和存储过程,旨在帮助读者深入理解MySQL数据库操作。
摘要由CSDN通过智能技术生成

1、创建SQL语句 DDL语句

MySQL命令行参数:

Usage: mysql [OPTIONS] [database]   //命令方式
 -?, --help          //显示帮助信息并退出
 -I, --help          //显示帮助信息并退出
 --auto-rehash       //自动补全功能,就像linux里面,按Tab键出提示差不多,下面有例子
 -A, --no-auto-rehash  //默认状态是没有自动补全功能的。-A就是不要自动补全功能
 -B, --batch         //ysql不使用历史文件,禁用交互
 (Enables --silent)
 --character-sets-dir=name   //字体集的安装目录                    
 --default-character-set=name    //设置数据库的默认字符集
 -C, --compress      //在客户端和服务器端传递信息时使用压缩
 -#, --debug[=#]     //bug调用功能
 -D, --database=name //使用哪个数据库
 --delimiter=name    //mysql默认命令结束符是分号,下面有例子
 -e, --execute=name  //执行mysql的sql语句
 -E, --vertical      //垂直打印查询输出
 -f, --force         //如果有错误跳过去,继续执行下面的
 -G, --named-commands 
 -g, --no-named-commands
 -i, --ignore-spaces //忽视函数名后面的空格.
 --local-infile      //启动/禁用 LOAD DATA LOCAL INFILE.
 -b, --no-beep       //sql错误时,禁止嘟的一声
 -h, --host=name     //设置连接的服务器名或者Ip
 -H, --html          //以html的方式输出
 -X, --xml           //以xml的方式输出
 --line-numbers      //显示错误的行号
 -L, --skip-line-numbers  //忽略错误的行号
 -n, --unbuffered    //每执行一次sql后,刷新缓存
 --column-names      //查寻时显示列信息,默认是加上的
 -N, --skip-column-names  //不显示列信息
 -O, --set-variable=name  //设置变量用法是--set-variable=var_name=var_value
 --sigint-ignore     //忽视SIGINT符号(登录退出时Control-C的结果)
 -o, --one-database  //忽视除了为命令行中命名的默认数据库的语句。可以帮跳过日志中的其它数据库的更新。
 --pager[=name]      //使用分页器来显示查询输出,这个要在linux可以用more,less等。
 --no-pager          //不使用分页器来显示查询输出。
 -p, --password[=name] //输入密码
 -P, --port=#        //设置端口
 --prompt=name       //设置mysql提示符
 --protocol=name     //使用什么协议
 -q, --quick         //不缓存查询的结果,顺序打印每一行。如果输出被挂起,服务器会慢下来,mysql不使用历史文件。
 -r, --raw           //写列的值而不转义转换。通常结合--batch选项使用。
 --reconnect         //如果与服务器之间的连接断开,自动尝试重新连接。禁止重新连接,使用--disable-reconnect。
 -s, --silent        //一行一行输出,中间有tab分隔
 -S, --socket=name   //连接服务器的sockey文件
 --ssl               //激活ssl连接,不激活--skip-ssl
 --ssl-ca=name       //CA证书
 --ssl-capath=name   //CA路径
 --ssl-cert=name     //X509 证书
 --ssl-cipher=name   //SSL cipher to use (implies --ssl).
 --ssl-key=name      //X509 密钥名
 --ssl-verify-server-cert //连接时审核服务器的证书
 -t, --table         //以表格的形势输出
 --tee=name          //将输出拷贝添加到给定的文件中,禁时用--disable-tee
 --no-tee            //根--disable-tee功能一样
 -u, --user=name     //用户名
 -U, --safe-updates  //Only allow UPDATE and DELETE that uses keys.
 -U, --i-am-a-dummy  //Synonym for option --safe-updates, -U.
 -v, --verbose       //输出mysql执行的语句
 -V, --version       //版本信息
 -w, --wait          //服务器down后,等待到重起的时间
 --connect_timeout=# //连接前要等待的时间
 --max_allowed_packet=# //服务器接收/发送包的最大长度
 --net_buffer_length=# //TCP / IP和套接字通信缓冲区大小。
 --select_limit=#    //使用--safe-updates时SELECT语句的自动限制
 --max_join_size=#   //使用--safe-updates时联接中的行的自动限制
 --secure-auth       //拒绝用(pre-4.1.1)的方式连接到数据库
 --server-arg=name   //Send embedded server this as a parameter.
 --show-warnings     //显示警告

1.1、数据库操作

// SQL命令用大写作为普遍的使用规范。
// 创建数据库
CREATE DATABASE 数据库名;
// 判断数据库是否存在并设置字符集编码
CREATE DATABASE 数据库名 [DEFAULT CHARACTER SET '字符编码']; //不能使用 “-” 
// 进入一个数据库
USE 数据库名;
// 查看当前数据库
SELECT database();
// 查看数据库
SHOW DATABASES;
SHOW DATABASES LIKE '匹配模式'; // _单个匹配 %多个匹配;可以同时使用
// 查看数据库的创建信息和字符集编码
SHOW CREATE DATABASE 数据库名;
// 更改数据库信息 (一般不用)
ALTER DATABASE 数据库名 CHARSET 字符集;
// 删除数据库
DROP DATABASE 数据库名;
DROP DATABASE [IF EXISTS] 数据库名; // IF EXISTS 判断是否存在 存在删除

1.2、数据表操作

// 创建数据表必须同时创建表中的字段
CREATE TABLE 表名(
    id TINYINT PRIMARY KEY auto_increment,// PRIMARY KEY 主键 auto_increment自动增长
    name VARCHAR(25),
    gender boolean,
    age INT  COMMENT '年龄',
    department VARCHAR(20),
    salary DOUBLE(7,2)
)ENGINE=INNODB DEFAULT CHARSET=utf8; // ENGINE=INNODB 指定数据库使用的执行引擎,INNODB才支持事务。

CREATE TABLE 数据库名.表名(
    数据的字段信息
)DEFAULT CHARSET 'utf8';

/*约束条件:
NOT NULL : 用于控制字段的内容一定不能为空(NULL)。
UNIQUE : 控件字段内容不能重复,一个表允许有多个 Unique 约束。
PRIMARY KEY: 用于控件字段内容不能重复,但它在一个表只允许出现一个。
FOREIGN KEY  REFERENCES : 1、约束用于预防破坏表之间连接的动作,FOREIGN KEY 约束。
             2. 也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
CHECK: 用于控制字段的值范围。
DEFAULT: 用于设置默认值。
*/

// 查看数据库中的所有表
SHOW TABLES;

// 查看表结构
DESC 表名; // 全称 DESCRIBE 表名;

// 查询mysql表字段信息的sql语句 
SHOW DATABASES                                 //列出 MySQL Server 数据库。
SHOW TABLES [FROM db_name]                     //列出数据库数据表。
SHOW CREATE TABLES tbl_name                    //数据表结构。
SHOW TABLE STATUS                              //列出数据表及表状态信息。
SHOW COLUMNS FROM tbl_name [FROM db_name]      //列出资料表字段
SHOW FIELDS FROM tbl_name [FROM db_name]       // 查看表结构
SHOW FULL COLUMNS FROM tbl_name [FROM db_name]    //列出字段及详情
SHOW FULL FIELDS FROM tbl_name [FROM db_name]     //列出字段完整属性
SHOW INDEX FROM tbl_name [FROM db_name]           //列出表索引。
SHOW STATUS                                       //列出 DB Server 状态。
SHOW VARIABLES                                    //列出 MySQL 系统环境变量。
SHOW PROCESSLIST                                  //列出执行命令。
SHOW GRANTS FOR user                              //列出某用户权限

// 修改表名
RENAME TABLE 修改的表名 to 新表名

// 添加字段
ALTER TABLE 表名 ADD 字段名 限制条件,ADD 字段名 限制条件;

// 修改一列类型
ALTER TABLE 表名 MODIFY 字段名 类型 [完整性约束条件] [firse | after 字段名];

一: 修改表信息
修改表名 
ALTER TABLE test_a RENAME TO sys_app;

修改表注释   
ALTER TABLE sys_application COMMENT'系统信息表';
 

二:修改字段信息
修改字段类型和注释
ALTER TABLE sys_application  MODIFY COLUMN app_name varchar(20) COMMENT '应用的名称';

修改字段类型
ALTER TABLE sys_application MODIFY COLUMN app_name TEXT;

设置字段允许为空
ALTER TABLE sys_application MODIFY COLUMN description VARCHAR(255) NULL COMMENT '应用描述';

增加一个字段,设好数据类型,且不为空,添加注释
ALTER TABLE sys_application ADD  `url` VARCHAR(255) NOT NULL COMMENT '应用访问地址';  

增加主键 
ALTER TABLE t_app ADD aid INT(5) NOT NULL , ADD PRIMARY KEY (aid);  

增加自增主键
ALTER TABLE t_app ADD aid INT(5) NOT NULL AUTO_INCREMENT , ADD PRIMARY KEY (aid); 

修改为自增
ALTER TABLE t_app MODIFY COLUMN aid INT(5) AUTO_INREMENT;

修改字段名字(要重新指定该字段的类型)
ALTER TABLE t_app CHANGE NAME app_name VARCHAR(20) NOT NULL;

删除字段
ALTER TABLE t_app DROP aid; 

在某个字段后增加字段
ALTER TABLE t_app ADD COLUMN gateway_id INT NOT NULL DEFAULT 0 AFTER `aid`; #(在 aid 字段后面添加 gateway_id 字段)
  
调整字段顺序 
ALTER TABLE t_app CHANGE gateway_id gateway_id INT NOT NULL AFTER aid ; #(注意gateway_id出现了2次,把gateway_id放在aid之前)

修改字段默认值语法:

ALTER TABLE 表名 ALTER COLUMN 字段名 DROP DEFAULT; (若本身存在默认值,则先删除)
ALTER TABLE 表名 ALTER COLUMN 字段名 SET DEFAULE 默认值;(若本身不存在则可以直接设定)

// 删除一个字段
ALTER TABLE 表名 DROP 字段;

// 删除主键
ALTER TABLE 表名 DROP PRIMARY KEY;
ALTER TABLE table_name DROP PRIMARY KEY;

// 创建多个主键,多个外键关联 
CONSTRAINT 外键名称 FOREIGN KEY 创建外键名称 REFERENCES 表名(字段名) ON 约束条件

CREATE TABLE `score` (
 `sid`  int NOT NULL AUTO_INCREMENT ,
 `student_id`  int NOT NULL ,
 `corse_id`  int NOT NULL ,
 `number`  int NOT NULL ,
 PRIMARY KEY (`sid`, `student_id`, `corse_id`),
 CONSTRAINT `student_id` FOREIGN KEY (`student_id`) REFERENCES `student` (`sid`) ON DELETE NO ACTION,
 CONSTRAINT `corse_id` FOREIGN KEY (`corse_id`) REFERENCES `course` (`cid`) ON DELETE NO ACTION
);
-- PS:字段名包裹用的是符号“ ` ”,而不是英文的“ '' ”,其他地方用“ '' 或者 "" ”包裹内容。

1.2.1、数字型

类型

大小

范围(有符号)

范围(无符号)

用途

TINYINT

1 字节

(-128,127)

(0,255)

小整数值

SMALLINT

2 字节

(-32 768,32 767)

(0,65 535)

大整数值

MEDIUMINT

3 字节

(-8 388 608,8 388 607)

(0,16 777 215)

大整数值

INT或INTEGER

4 字节

(-2 147 483 648,2 147 483 647)

(0,4 294 967 295)

大整数值

BIGINT

8 字节

(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)

(0,18 446 744 073 709 551 615)

极大整数值

FLOAT

4 字节

(-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)

0,(1.175 494 351 E-38,3.402 823 466 E+38)

单精度
浮点数值

DOUBLE

8 字节

(1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值