SLQ实战语句总结(一)

更新时间:2023-11-14 11:10:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

J2EE编程: Enterprise Edition :JDBC,EJB,Servlet,JSP,XML,分布式事务处理,SOAP,开源技术:Struts,Hibernate,Spring. DB(DataBase) SQL语句 关系数据库的知识技能: C/s架构:服务器,客户端模式; 概念:DBServer ,DB,Table, Rocord ,field; 1)数据库系统,采用C/S架构。 分为Server端软件 和 Client端软件;数据集中存放在服务器端,安全,且易于管理(增、删、改、查); 2)什么是DB Server? 是某一个厂商写的,运行、管理数据库的大型软件。需安装在一台机器上,供客户端来访问,为客户端提供数据服务。 该软件大致分为两个部分:

管理部分 数据存放部分 | |

DBMS DB、Table、record、field 3)什么是库、表、记录、字段? 数据库服务器上,存放数据的组织形式。 什么是DBMS? DB Server软件中,管理、操作DB的部分; //要管理用户、建立与Client连接,接受访问请求,操作DB、Table数据存取, 返回访问结果及其查询数据。 什么是SQL?(Structured Query Language),SQL是Client端操作DBMS的专用数据库命令语言。 什么是DDL?操作目标:DB库的结构、Table表的结构、索引的建立删除。 SQL:create database '库名'; Drop database '库名';

create table '表名'; drop table '表名'; alter table '表名' rename to '新表名' ...

create index '索引名'; drop index '索引名'; Index-------索引

为了加快搜索速度,减少查询执行时间,可为一张表 的 一个特定字段,设置索引。 .

索引实质就是一个字段值的排序列表。用于快速定位目标记录。 缺点:i)另外占用disk空间。 ii)影响insert、update、delete执行效率。必须重建索引。 1)建Index:

Create Table时,建索引。 mysql> create table 表名(.....,

INDEX 索引名(某字段名) //给指定字段,建立索引。

INDEX (某字段名), INDEX (某字段名), //索引名缺省=字段名

INDEX (某字段名,某字段名)... //建立多个索引。

向已经存在的表,添加索引。

mysql> CREATE INDEX 索引名 ON 表名(某字段名,某字段名,...);

━━━━━━━━━━━━━━━━━━━━━━━━━━

//字段为BLOB TEXT时,可强制性指定字符个数,为它们添加索引:

|

mysql> CREATE INDEX 索引名 ON 表名(某字段名(93))

2) 删除Index:

mysql> DROP INDEX 索引名 ON 表名;

安装Mysql server: ■常用操作: Mysql 在cmd模式下关闭与打开服务的两种方法 1. 方法一:适用于已经安装Mysql服务的情况: cmd下输入 net start mysql 2. 方法二:适用于未安装Mysql服务的情况: cmd下到Mysql的bin目录下运行 mysqld-nt 关闭 1. 方法一:适用于已经安装Mysql服务的情况: cmd下输入 net stop mysql 2. 方法二:适用于未安装Mysql服务的情况: cmd下到Mysql的bin目录下运行 mysqladmin -u[username] -p[password] shutdown

-----------------------------------------------------------------------------------------------------------------------

SQL管理的部分

登陆本机: bin目录下:mysql -h localhost -u root -proot 1)显示版本号mysql>select version(); 当前日期mysql>...... current_date; ...... curdate(); mysql>...... now(); mysql>select version(),current_date; //一行显示多个命令。 //两条查询结果,会被临时组合在一个结果表里; 2)显示 DB当前用户: mysql>select user(); 查看当前Server状态:mysql>status; 显示server支持的字符集:SHOW CHARACTER SET; ................中文...:SHOW COLLATION LIKE '%chinese%'; 设置当前客户端操作的字符集: mysql>set charset gb2312; //或utf8; latin1; 设置服务器端的字符集:重构;

---------------------------------------------------------------------------------------------------------------------- 1)查看已有用户: 前提:需先 mysql>use mysql; //打开Mysql Server为你创建的mysql系统库,才可以访问其中含的用户表(包含所有用户); mysql> select * from user; //查看所有用户 及其所有权限(字段); select host,user from user; //仅查看用户; //安装MySQL Server时,会自动创建两个数据库,其中一个是MySQL系统数据库mysql,

含有5个MySQL授权表,其中一个表(《user》)包含MySQL上所有用户信息。 简单DB操作: mysql> show databases;//显示(\秀\当前连接的DB Server一共有几个DB; .....> use mysql; //打开其中某个DB; .....> show tables; //显示该DB中有几张表; .....> select host,user from user;//查看表中内容; 2) 新建一个user: 例子:mysql>create user duca identified by \建成一个%远程用户。 create user duca@localhost identified by \建成一个localhost用户。 //注意:用户必需唯一。 |---用户密码。 //如此创建的用户,尚没有任何权限; 3) 新建的user,需赋予权限:

| |

mysql> grant 权限名,权限名,权限名,权

限名 on 库名.表名 to 用户名@主机名 identified by \密码\

| | | | | | | | |

例: select,insert,delete,update *.* duca@localhost; 赋给该用户的

或 test.aaaa 密码

mysql>grant select,insert,delete,update on *.* to duca identified by \

...to duca@localhost identified by \ 4)删除用户: 例子:mysql>drop user dudu@localhost; ----仅删除本地该用户; drop user duca2; --------------仅。。远程该用户; ================ 附:MySQL 权限等级: . SELECT: INSERT: DML权限 UPDATE: DELETE: CREATE: DDL权限 ALTER: DROP: RELOAD:重载|刷新MySQL服务器。 SHUTDOWN:关闭正在运行的MySQL服务器。 PROCESS:在MySQL服务器上跟踪一项活动。 FILE:在服务期上读、写文件。 GRANT:授予其他用户权限。这些权限只能是本用户现在拥有的权限中的一部分。 INDEX:创建、编辑、删除表索引。 REFERENCES:创建、编辑、删除外键引用。 SHOW DATABASES:浏览可用的DB。 SUPER:执行管理命令。 CREATE TEMPORARY TABLES:创建临时表。 LOCK TABLES:创建、删除表锁。 EXECUTE:执行被保存的程序。 REPLICATION SLAVE:在复制内容中读主二进制日志。 REPLICATION CLIENT:在.........申请主、副信息。

-----------------------------------------------------------------------------------------------------------------------

◆DB---------库

1)显示当前已有DB: mysql> show databases; 2) 新建一个DB:mysql> create database 新库名;//一般同项目名;bookstore; 删除一个DB: drop ........ ......; //同时删除里面所有的 表(及表中数据)、索引 3)打开一个DB: mysql>use 库名; 4)显示当前选择的DB:mysql>SELECT DATABASE(); 5)备份DB: ...\\bin> mysqldump -u 用户名 -p密码 库名>盘符:\\库名.sql //将DB整个 ===>导入一个.sql文件 例子:D:\\masql6.0\\bin>mysqldump -u root -proo t mysql>d:\\mysqldb.sql //图形界面,叫---Tool---Extract DB //EMS可SQL Script执行导出的sql文件,恢复数据库。

萃取

◆Table-------表

4) 显示当前DB下的所有Table: mysql> show tables; .

━━━━━━

显示某个DB下的所有Table: mysql> show tables from 库名; //show .. from mysql;

5) 描述一张Table的结构: mysql> desc 表名; //显示所有字段信息;(字段名|字段类型) //更改字符集:mysql> set charset gbk; 例子:show databases; use qq; show tables; desc table2; select * from table2;

6) 新建一张Table:mysql> create table 表名(字段名 type(长度) NOT NULL default '值', -------某个字段的定义

━━━━━━━━━ | | | |

SQL类型 非空 缺省 缺省值 ---为字段指定一个默认

或 不写 或 NULL 值,自动填上。

为可空 空缺省值

.........................,

字段名 type(长度),.......,

PRIMARY KEY ('主键字段名')-----------------主键字段 指定

)TYPE=InnoDB ----------------------------表类型 定义

DEFAULT CHARSET=utf8; ---------------------表的缺省字符集 例子://一个正确的单表创建语句: CREATE TABLE `user` ( //单引号,可以全部不要。 单引号用~键上的那个的`。 default '' 此单引号,可用\键上的 `userid` int(11) NOT NULL auto_increment, `username` varchar(8) default NULL, `gender` varchar(6) default NULL, `age` int(4) default NULL, PRIMARY KEY (`userid`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8 //InnoDB,支持事务处理。字符集设置。 例2: CREATE TABLE `aaaa` ( `businesskey` varchar(6) default NULL, `field2` int(11) NOT NULL default '0', `field3` varchar(4) default NULL, `caroid` int(12) default NULL, PRIMARY KEY (`field2`), KEY `caroid` (`caroid`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8

7)删除一张表:mysql> drop table 表名; //会删除数据; 8) 改变表结构:

字段==

添加新字段:mysql> alter table 表名 add 新字段名 type(长度);

━━━━━━━━━━━━

修改原字段:mysql> alter table 表

名 change 原字段名 新字段名 新type(新长度);

━━━━━━━━━━━━━━━━━━━━

删除某字段:mysql> alter table 表名 drop 字段名;

━━━━━━

表==

修改表名: mysql> alter table 表名 rename to 新表名;

8)复制一张表:mysql> CREATE TABLE 复制表名 SELECT * FROM 源表; //将所有字段,复制入新表。copy表的结构,指定的字段值也会copy;

8)备份一张Table:...bin> mysqldump -u 用户名 -p密码 库名 表名>盘符:\\*.sql //将表结构+记录 ===>导入一个.sql文件

//EMS 图形界面:Export Data。 选表---Data Manipulation---Export Data as SQL Script

9)恢复数据:恢复库、表: .

sql文件导入某DB中:bin> mysql -u root -p密码 库名

由普通数据文本文件导回数据。

Import Data。 选表---Data Manipulation---Import Data--- 特别:txt导入工具。

-----------------------------------------------------------------------------------------------------------------------------------

★MySQL 的SQL Type:(SQL字段类型)

━━━━━━━━

TINYINT -------- 1byte。-128~127(有符号数);0~255(无符号数) 常用于表达Boolean值。true:1 false:0

SMALLINT -------- 2byte。 -32768~32767(有符号数);0~65535(无符号数)

MEDIUMINT -------- 3byte。 -8388608~8388607(....);0~16777215(.....)

INT -------- 数值类型,整数,值范围:-2,147,483,648 ~ 2,147,483,647(有符号数) 位数,是2的次方。

(INTEGER) 0~4294967295(无符号数)

BIGINT -------- 8byte。

FLOAT -------- 4byte。-3.402823466E+38~1.175494351E-38;0;1.175494351E-38~3.402823466E+38(有符号数) 0;1.175494351E-38~3.402823466E+38(无符号数)

DECIMAL -------- 数值类型,可

浮点小数,

DOUBLE -------- 数值类型,双精度浮点数。

DATE -------- 3byte。YYYYMMDD格式 日期字段。 1000-01-01~9999-12-31

TIME -------- 3byte。HH:MM:SS格式 时间字段。

DATETIME -------- 8byte。YYYYMMDD HH:MM:SS格式 日期/时间类型。1000-01-01 00:00:00~9999-12-31 23:59:59 YEAR -------- 1byte。YYYY 或 YY格式,范围在:1901 ~ 2155之间的指定年的字段。

TIMESTAMP -------- 8byte。YYYYMMDDHHMMSS格式的时间戳类型。1970-01-01 00:00:00~2037年的某个时候。 CHAR -------- 字符类型,长度固定。最大长度255个字符。

VARCHAR -------- ........,变长。 .................。 位数是字符个数。

TEXT -------- 字符串类型。 ........65535个

BLOB -------- 二进制类型。可变数据

ENUM -------- 可以从定义数值的列表上接受值的数据类型。

SET -------- ................集合上................。

===TIMESTAMP的使用方法:可以设置一张表当输入记录时,MySQL自动帮你记录,该记录的插入日期时间(戳)字段值的功能。 字段type定为:TIMESTAMP。 去掉use dimension小勾、Not Null、 default current_timestamp。 5)什么是关系数据? 什么是表的结构? 创建表的字段;(字段名|字段类型) //字段是表的基本属性结构; 什么是填充数据? (记录---表的字段值的一次具体化) 主键primary key,是一个字段,其值用于唯一标识记录, 主键值必需唯一; 主键的作用:表内区别记录用的; 主键建立的技巧:i)代理主键。 纯整型、自动增长的字段autoincrement;//mysql、sql server ii)业务主键。 利用业务数据中的某个字段 //有些业务字段可以保证唯一性; 学号;身份证号;工号;警号;书号;航班号;

注册名;//邮箱 优点:安全性高;

------------------------------------------------------------------------------------------------------------- SQL分为两部分: .

SQL

┌───────────┴─────────────┐

[DB Server的管理部分] [SQL数据操作部分] ┌───────────┴───────────┐

(DBA) 用户、内存优化 DML DDL

(Data Manipulation Language) (Data Definition Language)

●DML操作------- Data Manipulation Language.

◆记录--------- insert 、delete 、update 、select 字段

------------------------------------------------数据库操作------------------------------------------------------ [单表] ====增==== (插入记录)

语法I):<指定字段名>

▲insert into 表名 (某列名, 某列名, 某列名, .....) //在指定列名,插入值,形成一条记录,放入表中。

values(列值, 列值, 列值, ......);

例:insert into student (name,age) values('zhang',25); <不指定字段名>

▲insert into 表名 //缺省,自动从第一列1,列2,....插入值。

values(列值, 列值, 列值, ......); //字段值必需从第一个字段开始,全部列出;不能缺少字段;

例:insert into student values('wang', 29,'female'); // //<字段值自动填充问题>: 遇到字段值是 自动增长、TIMESTAMP等有DB自动插入的字段, 可用null暂时替代该字段值, <一句多记录>

▲一条Insert SQL,多条记录数据,可插入多条记录: INSERT INTO `customer2` (`ID`, `name`, `sex`, `age`, `product_ID`) VALUES . (1,'张三','男',30,2),

(2,'李四','女',50,4), (3,'王五','男',60,4), (4,'刘六','女',40,NULL), (8,'刘六','女',40,NULL); 例子: show databases; use qq; select * from product1; <指定字段名> insert into `product1` (`ID`,`NAME`,`price`) values (4,'毛巾',5.0);/*标准*/ insert into `product1`(`ID`,`NAME`, `price`,`date`) values (5,'裤子',12.2,'2009-06-16'); insert into product1 (`ID`,`NAME`,`price`) values (6,'夹克',233.0); insert into product1 (ID,`NAME`,`price`) values (7,'毛巾',41.0); /*不指定字段插入记录*/ insert into product1 VALUES (9,'皮鞋',423.3,'2011-02-16'); insert into product1 VALUES (12,'鞋',113.3,'2012-03-17'); <一句多记录> insert into `product1` values (13,'衬衫1',56.2,'2010-12-19'), (14,'衬衫2',56.3,'2010-11-18'), (15,'衬衫3',56.4,'2010-10-13');

---------------------------------------------------------------------------------------------------------------------- ▲高级语句:值的部分,也可以插入计算或函数调用的结果: 例:insert into student (name,age,salary) values('zhang','25',age+2000); //直接运算。

━━━━

insert into users (id,name,password,age) values(LAST_INSERT_ID()+1, 'zhang','abc','25'); //调用函数。

━━━|━━━━━━

函数名 技巧:自动增长,步长为2,怎么办?LAST_INSERT_ID()+2

注意:上述语句,LAST_INSERT_ID()有Bug,还需修整为: insert INTO `customer2` (`id`,`name`,`age`) VALUES( LAST_INSERT_ID()=LAST_INSERT_ID() + 2 ,'du',20);

━━━━━━━━ ━━━━|━━━━ ━

需要存回该函数---第一次该函数取值后 该函数取值总是停在最后一条记录的前一个值;

本文来源:https://www.bwwdw.com/article/ad1v.html

Top