SQL 03

********************2017年8月10日********************
安装mysql

Typical :典型安装
Custom :自定义安装
Complete:完全安装

简单认知
mysql默认端口号是:3306
mysql的超级用户叫:root

在cmd中启动mysql服务:net start mysql
在cmd中登录mysql :mysql -u root -p password -P端口号 -h服务器名称或IP地址
在Windows的cmd中清屏命令:cls
退出:1. exit; 2. quit; 3. \q;
=
mysql语句的规范
1.关键字与函数名称全部小写
2.数据库名称、表名称、字段名称全部小写
3.SQL语句必须以分号结尾

修改MYSQL提示符
1.连接客户端时通过参数指定
shell>mysql -uuser -ppassword --prompt 提示符

2.连接上客户端后,通过prompt命令修改
mysql>prompt 提示符

提示符参数:
\D :完整的日期
\d :当前数据库
\h :服务器名称
\u :当前用户

常用命令

1.数据库的操作
SELECT VERSION(); //显示当前服务器版本
SELECT NOW(); //显示当前日期时间
SELECT USER(); //显示当前用户

CREATE DATABASE t1; //创建数据库t1 //在许多时候 DATABASE 和 SCHEMA 作用相同
CREATE SCHEMA t1; //创建数据库t1

ALTER DATABASE t1; //修改数据库t1
DROP DATABASE t1; //删除数据库t1
USE t1; //打开数据库t1
SHOW DATABASES; //查看当前服务器下的数据库
SHOW WARNINGS; //查看警告信息
SHOW CREATE DATABASE t1; //显示数据库t1的编码方式
CREATE DATABASE IF NOT EXISTS t2 CHARACTER SET=gbk; //先检查是否存在t2数据库,已存在则直接修改其编码方式,不存在则先创建并修改其编码方式

ALTER DATABASE t2 CHARACTER SET=utf8; //修改数据库的编码方式

2.表的操作
2.1:CREATE TABLE [IF NOT EXISTS] table_name(column_name data_type, ...)//column:列 //创建数据表

2.2:SHOW TABLES [FROM db_name] [LIKE ‘pattern‘ | where expr]; //查看数据表

2.3:SHOW COLUMNS FROM tb_name; //查看数据表结构

3.记录的插入与查找
INSERT [INTO] tb_name [(col_name,...)] VALUES(val,..); //插入记录
空值与非空
NULL,字段值可以为空
NOT NULL,字段值禁止为空 // 在创建时设置如:CREATE TABLE tb2(username VARCHAR(20)NOT NULL,age TINYINT UNSIGNED NULL);

4.自动编号:AUTO_INCREMENT

4.1 自动编号,必须与主键组合使用
4.2 默认情况下,起始值为1,每次增量为1

5.主键:PRIMARY KEY
5.1 主键约束
5.2 每张数据表只能存在一个主键
5.3 主键保证记录的唯一性
5.4 主键自动为 NOT NULL

例子:CREATE TABLE tb3(id SMALLINT UNSIGNED AUTO_INCREMENT KEY,username VARCHAR(30) NOT NULL);

6.唯一约束:UNIQUE KEY
6.1 唯一约束可以保证记录的唯一性
6.2 唯一约束的字段可以为空值(NULL)
6.3 每张数据表可以存在多个唯一约束

例子:CREATE TABLE tb3(id SMALLINT UNSIGNED AUTO_INCREMENT KEY,username VARCHAR(30) NOT NULL UNIQUE KEY);

7.默认约束:DEFAULT
例1:CREATE TABLE tb3(id SMALLINT UNSIGNED AUTO_INCREMENT KEY,username VARCHAR(30) NOT NULL UNIQUE KEY,SEX ENUM(‘男‘,‘女‘,‘保密‘) DEFAULT ‘保密‘);
例2:ALTER TABLE user2 ALTER age SET DEFAULT 15;

当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。

8.约束
8.1 约束保证数据的完整性和一致性
8.2 约束分为表级约束和列级约束
8.3 约束类型包括:
NOT NULL ( 非空约束)
PRIMARY KEY(主键约束)
UNIQUE KEY(唯一约束)
DEFAULT(默认约束)
FOREIGN KEY(外键约束):实现一对一或一对多关系

9. 外键约束的要求:
1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表。
2.数据表的存储引擎智能为InnoDB
3.外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
4.外键列和参照列必须创建索引。如果参照列不存在索引的话,MYSQL将自动创建索引。
修改数据表的存储引擎
MYSQL配置文件: default-storage-engine=innodb

SHOW CREATE TABLE 表名; //查看表的存储引擎与编码方式

10. 外键约束的参照操作

1.CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行
2.SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL
3.RESTRICT:拒绝对父表的删除或更新操作
4.NO ACTION:标准SQL的关键字,在MYSQL中与RESTRICT相同
**************************************12:58 2017/8/8******************************

11.表级约束与列级约束
11.1:对一个数据列建立的约束,称为列级约束
11.2:对多个数据列建立的约束,称为表级约束
11.3:列级约束既可以在列定义时声明,也可以在列定义后声明,表级约束只能在列定义后声明。

12.修改数据表
12.1:添加单列:ALTER TABLE tb1_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name]
FIRST:新插入的那一列置于所有列最前面
例子:ALTER TABLE user ADD truename VARCHAR(20) NOT NULL FIRST;
AFTER:置于指定列的后面
例子:ALTER TABLE user ADD password VARCHAR(32) NOT NULL AFTER username;
都不加则置于所有列最后面

12.2:添加多列:ALTER TABLE tb1_name ADD [COLUMN] (col_name column_definition,...)
区别:添加单列的时候,所有的列不用加小括号,添加单列的时候可以指定位置关系,添加多列的时候不能指定位置关系,只能在原来数据表列的下方

12.3:删除单列:ALTER TABLE tb1_name DROP [COLUMN] col_name

12.4:删除多列:ALTER TABLE tb1_name DROP [COLUMN] col_name,DROP [COLUMN] col_name;

12.5:添加主键约束:ALTER TABLE tb1_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type](index_col_name,...)
CONSTRAINT 名字:给主键起名字

12.6:添加唯一约束:ALTER TABLE tb1_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY] [index_name] [index_type](index_col_name,...)

12.7:添加外键约束:ALTER TABLE tb1_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition

例子:ALTER TABLE user2 ADD FOREIGN KEY (pid) REFERENCES provinces (id);

12.8:添加/删除默认约束:ALTER TABLE tb1_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

例1:ALTER TABLE user2 ALTER age SET DEFAULT 15;

例2:ALTER TABLE user2 ALTER age DROP DEFAULT;

12.9:删除主键约束:ALTER TABLE tb1_name DROP PRIMARY KEY

例子:ALTER TABLE user2 DROP PRIMARY KEY; //删除主键时不用加列名,因为每张数据表有且仅有一个主键

12.10:删除唯一约束:ALTER TABLE tb1_name DROP {INDEX | KEY}index_name; //删除时需加唯一约束的字段名

12.11:以网格的形式查看约束:SHOW INDEXES FROM user2\G;

12.12:删除外键约束:ALTER TABLE tb_name DROP FOREIGN KEY fk_symbol;//删除时需加外键约束的名字

查看外键约束的名称:SHOW CREATE TABLE tb_name;(CONSTRAINT后面的为外键约束名字)

12.13:修改列定义:修改字段的数据类型,位置
ALTER TABLE tb_name MODIFY [COLUMN] col_name column_definition [FRIST | AFTER col_name]

例1:ALTER TABLE user2 MODIFY id SMALLINT UNSIGNED NOT NULL FIRST; //将user2表中已存在的字段id及其定义改变到所有列的最前面

例2:ALTER TABLE user2 MODIFY id TINYINT UNSIGNED NOT NULL ;// 修改了其类型 注意:将大类型修改为小类型时可能会造成数据的丢失

13.14:修改列名称:
ALTER TABLE tb_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST | AFTER col_name]

13.15;数据表更名:
方法1:ALTER TABLE tb_name RENAME [TO| AS] new_tb_name
方法2: RENAME TABLE tb_name TO new_tb-name [,tb_name2 TO new_tb_name2]...
注意:数据表和字段的更名可能造成之前创建的索引和视图不能正常工作

时间: 2024-10-22 10:39:31

SQL 03的相关文章

PL/SQL - 03

使用嵌套块 在PL/SQL块中可以嵌套子块,嵌套的块既可以放在外部块的执行部分,也可以放在异常处理部分,但是不能放在外部块声明部分内部嵌套块可以访问外部嵌套块声明的变量,但是外部声明块不能访问内部声明块中的变量 declare v_deptno number(2) := 50 ;v_dname varchar2(12) ; begin        begin        select dname  into v_dname from scott.dept where deptno = v_d

PL/SQL 03 流程控制

--IF语法IF condition THEN  statements;[ELSIF condition THEN  statements;][ELSE  statements;]END IF; --CASE 语法 1.在 CASE 语句中使用单一选择符进行等值比较 CASE selector  WHEN expression1 THEN sequence_of_statements1;  WHEN expression2 THEN sequence_of_statements2;  ... 

hibernate初步

package cn.bdqn.test; import java.io.Serializable; import java.util.Iterator; import java.util.List; import java.util.Scanner; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transac

Spring JdbcTemplate小结

提供了JdbcTemplate 来封装数据库jdbc操作细节: 包括: 数据库连接[打开/关闭] ,异常转义 ,SQL执行 ,查询结果的转换 使用模板方式封装 jdbc数据库操作-固定流程的动作,提供丰富callback回调接口功能,方便用户自定义加工细节,更好模块化jdbc操作,简化传统的JDBC操作的复杂和繁琐过程. 1) 使用JdbcTemplate 更新(insert /update /delete) 1 int k = jdbcTemplate.update("UPDATE tblna

SQL Server 基础 03 查询数据基础

查询数据 简单的查询 1 create table stu_info 2 ( 3 sno int not null 4 ,sname varchar(20) not null 5 ,sex varchar(2) not null 6 ,birth varchar(20) not null 7 ,email varchar(20) not null 8 ,telephone int not null 9 ,depart varchar(20) not null 10 ) 11 12 13 sele

SQL 学习日志03

添加表内容: insert into table_name (字段1,字段2,...) values (值1,值2,....) 查询表内容: select * from table_name select 字段1,字段2 from table_name select top 10 * from table_name select * from table_name where 字段=值 select * from table_name where 字段<>值 select * from tab

【SQL进阶】03.执行计划之旅1 - 初探

听到大牛们说执行计划,总是很惶恐,是对知识的缺乏的惶恐,所以必须得学习执行计划,以减少对这一块知识的惶恐,下面是对执行计划的第一讲-理解执行计划. 本系列[T-SQL]主要是针对T-SQL的总结. SQL基础 [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础]04.表表达式-上篇 [T-SQL基础]04.表表达式-下篇 [T-SQL基础]05.集合运算 [T-SQL基础]06.透视.逆透视.分组集 [T-SQL

SQL实战——03. 查找各个部门当前(to_date=&#39;9999-01-01&#39;)领导当前薪水详情以及其对应部门编号dept_no

查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号dept_noCREATE TABLE `dept_manager` (`dept_no` char(4) NOT NULL,`emp_no` int(11) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (`emp_no`,`dept_no`));CREATE TABLE `salaries` (`emp_

SQL Tuning 基础概述03 - 使用sql_trace和10046事件跟踪执行计划

1.使用sql_trace跟踪执行计划 1.1 当前session跟踪: alter session set sql_trace = true; //开始sql_trace alter session set tracefile_identifier = jytrace; //设定trace文件的标识符 alter session set sql_trace = false; //结束sql_trace 1.2 其他session跟踪:(根据其他session的sid, serial#定位,最常