CREATE DATABASE mybookstore;2 DROP DATABASE mybookstore;二、表的基本操作
1、创建表
insert into 表名(字段名1,字段名2) values(值1,值2);
1 CREATE TABLE student(2 id INT,3 `name` VARCHAR(50)4 );
2、删除表
delete from 表名 where语句;
DROP TABLE student;
3、修改表
update 表名 set 字段名1=字段值,字段名2=字段值 where语句
update dept set dept_name=‘人事部门‘ where id=4
4、查询表
select 字段名1,字段名2 from 表名 where语句
SELECT * FROM stu WHERE id=3;三、表查询关键字
1、关键字使用及SQL语句顺序
select 列名1,列名2...
from 表1
join 表2
on 连接条件
where 过滤条件
group by 分组条件1,分组条件2
having 聚合函数过滤
order by 排序列1,排序列2
limit 分页
2、执行顺序:from—>on—>join—>where—>group by—>with—>having—>select—>distinct—>order by —>limit
四、约束1、主键[primary key ]:可以唯一的表示一行数据,可以快捷的检索到一条数据!(唯一、非空、可以被引用) 2、自增:auto_increment:自增仅仅适用于数值类型的值! 3、非空:not null :表示当前字段值不能为null 4、唯一:unique:表示当前字段值必须是唯一的 5、注意一点:约束必须放在列名类型后面,至于多个约束的顺序无所谓! 6、外键:
外键关联指的是将一个表中的列和另一个表的主键进行关联!
1)一对一 经典案例:夫妻
1 /*一对一:夫妻*/ 2 CREATE TABLE husband( 3 id INT PRIMARY KEY AUTO_INCREMENT, 4 `name` VARCHAR(20) NOT NULL 5 ); 6 7 INSERT INTO husband VALUES(1,‘张三‘); 8 INSERT INTO husband VALUES(2,‘王五‘); 9 10 CREATE TABLE wife(11 id INT PRIMARY KEY AUTO_INCREMENT,12 `name` VARCHAR(20) NOT NULL,13 FOREIGN KEY(id) REFERENCES husband(id)14 );15 INSERT INTO wife VALUES(1,‘李四‘);16 INSERT INTO wife VALUES(2,‘赵六‘);17 INSERT INTO wife VALUES(1,‘李静‘); /*由于一对一约束,此行插入失败*/
2)一对多[多对一]
通常是在多的一端关联一的主键!通常将外键建在多的一端!
经典案例:部门表与员工表 dept& emp
1 /*一对多:员工-部门*/ 2 DROP TABLE dept; 3 CREATE TABLE dept( 4 id INT PRIMARY KEY AUTO_INCREMENT, 5 dept_name VARCHAR(10) NOT NULL UNIQUE 6 ); 7 INSERT INTO dept VALUES(NULL,‘开发部门‘); 8 9 DROP TABLE emp;10 CREATE TABLE emp(11 id INT PRIMARY KEY AUTO_INCREMENT,12 `name` VARCHAR(30) NOT NULL UNIQUE,13 dept_id INT ,14 FOREIGN KEY(dept_id) REFERENCES dept(id)15 );16 INSERT INTO emp VALUES(NULL,‘张三‘,1);17 INSERT INTO emp VALUES(NULL,‘李四‘,1);18 INSERT INTO emp VALUES(NULL,‘王五‘,1);
3)多对多
经典案例:教师 学生
1 /*多对多:教师-学生*/ 2 CREATE TABLE teacher( 3 id INT PRIMARY KEY AUTO_INCREMENT, 4 `name` VARCHAR(20) NOT NULL 5 ); 6 INSERT INTO teacher VALUES(NULL,‘李老师‘); 7 INSERT INTO teacher VALUES(NULL,‘刘老师‘); 8 INSERT INTO teacher VALUES(NULL,‘王老师‘); 9 10 CREATE TABLE student(11 id INT PRIMARY KEY AUTO_INCREMENT,12 `name` VARCHAR(20) NOT NULL13 );14 INSERT INTO student VALUES(NULL,‘严涛‘);15 INSERT INTO student VALUES(NULL,‘杨涛‘);16 INSERT INTO student VALUES(NULL,‘邹梦洁‘);17 18 CREATE TABLE tea_stu(19 tea_id INT,20 stu_id INT,21 FOREIGN KEY(tea_id) REFERENCES teacher(id),22 FOREIGN KEY(stu_id) REFERENCES student(id)23 );24 INSERT INTO tea_stu VALUES(1,1);25 INSERT INTO tea_stu VALUES(1,2);26 INSERT INTO tea_stu VALUES(1,3);27 INSERT INTO tea_stu VALUES(2,1);28 INSERT INTO tea_stu VALUES(2,1);
通过sql语句对MySql数据库的基本操作
标签:sql语句 顺序 int distinct 1.5 not creat varchar 人事部门
小编还为您整理了以下内容,可能对您也有帮助:
sql数据库的基本操作
命令行
1、显示当前数据库服务器中的数据库列表:mysql> SHOW DATABASES;
2、建立数据库:mysql> CREATE DATABASE 库名;
3、建立数据表:mysql> USE 库名;mysql> CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));
4、删除数据库:mysql> DROP DATABASE 库名;
5、删除数据表:mysql> DROP TABLE 表名;
6、将表中记录清空:mysql> DELETE FROM 表名;
7、往表中插入记录:mysql> INSERT INTO 表名 VALUES ("hyq","M");
8、更新表中数据:mysql-> UPDATE 表名 SET 字段名1='a',字段名2='b' WHERE 字段名3='c';
9、用文本方式将数据装入数据表中:mysql> load data local infile "d:/mysql.txt" into table 表名;
10、导入.sql文件命令:mysql> USE 数据库名;mysql> source d:/mysql.sql;
11、命令行修改root密码:mysql> update mysql.user set password=password('新密码') where user='root';mysql> flush privileges;
12.修改密码的三种方法:mysql>update user set password=password('123456') where user='joy_pen';mysql>flush privileges;mysql>set password for 'joy_oen'=password('123456');mysql>grant usage on *.* to 'joy_pen' identified by '123456';
1、创建数据库
命令:create database <数据库名>例如:建立一个名为xhkdb的数据库mysql> create database xhkdb;
2、显示所有的数据库
命令:show databases (注意:最后有个s)mysql> show databases;
3、删除数据库
命令:drop database <数据库名>例如:删除名为 xhkdb的数据库mysql> drop database xhkdb;
4、连接数据库
命令: use <数据库名>例如:如果xhkdb数据库存在,尝试存取它:mysql> use xhkdb;屏幕提示:Database changed
5、当前选择(连接)的数据库mysql> select database();
6、当前数据库包含的表信息:mysql> show tables; (注意:最后有个s)
三、表操作,操作之前应连接某个数据库
1、建表
命令:create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]);
mysql> create table MyClass(
> id int(4) not null primary key auto_increment,
> name char(20) not null,
> sex int(4) not null default ''0'',
> degree double(16,2));
2、获取表结构
命令: desc 表名,或者show columns from 表名
mysql>DESCRIBE MyClass
mysql> desc MyClass;
mysql> show columns from MyClass;
3、删除表
命令:drop table <表名>
例如:删除表名为 MyClass 的表mysql> drop table MyClass;
4、插入数据
命令:insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )]
例如,往表 MyClass中插入二条记录, 这二条记录表示:编号为1的名为Tom的成绩为96.45, 编号为2 的名为Joan 的成绩为82.99,编号为3 的名为Wang 的成绩为96.5.
mysql> insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);
5、查询表中的数据
1)、查询所有行
命令: select <字段1,字段2,...> from < 表名 > where < 表达式 >
例如:查看表 MyClass 中所有数据mysql> select * from MyClass;
2)、查询前几行数据
例如:查看表 MyClass 中前2行数据
mysql> select * from MyClass order by id limit 0,2;
6、删除表中数据
命令:delete from 表名 where 表达式
例如:删除表 MyClass中编号为1 的记录
mysql> delete from MyClass where id=1;
7、修改表中数据:update 表名 set 字段=新值,… where 条件
mysql> update MyClass set name=''Mary'' where id=1;
8、在表中增加字段:
命令:alter table 表名 add 字段 类型 其他;
例如:在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0
mysql> alter table MyClass add passtest int(4) default ''0''
9、更改表名:
命令:rename table 原表名 to 新表名;
例如:在表MyClass名字更改为YouClass
mysql> rename table MyClass to YouClass;
更新字段内容
update 表名 set 字段名 = 新内容
update 表名 set 字段名 = replace(字段名,''旧内容'',''新内容'');
怎样用SQL语句查询一个数据库中的所有表
查询一个数据库中的所有表sql语句是show tables;
显示所有数据库的命令是:show databases;要查看某个数据库先要进入数据库使用user <数据库名>命令;进入数据库之后才能查询数据库中有哪些表。使用以下命令即可查出所有表:
show tables;
扩展资料
mysql数据库的基本sql操作命令介绍:
1、显示当前数据库服务器中的数据库列表:mysql> SHOW DATABASES;
2、建立数据库:mysql> CREATE DATABASE 库名;
3、建立数据表:mysql> USE 库名;mysql> CREATE TABLE 表名 (字段名 VARCHAR(20), 字
名 CHAR(1));
4、删除数据库:mysql> DROP DATABASE 库名;
5、删除数据表:mysql> DROP TABLE 表名;
6、将表中记录清空:mysql> DELETE FROM 表名;
7、往表中插入记录:mysql> INSERT INTO 表名 VALUES ("hyq","M");
8、更新表中数据:mysql-> UPDATE 表名 SET 字段名1='a',字段名2='b' WHERE 字段名3='c';
9、用文本方式将数据装入数据表中:mysql> load data local infile "d:/mysql.txt" into table 表名;
10、导入.sql文件命令:mysql> USE 数据库名;mysql> source d:/mysql.sql;
SQL数据库的操作
SQL包括了所有对数据库的操作,主要是由4个部分组成:
1.数据定义:这一部分又称为“SQL DDL”,定义数据库的逻辑结构,包括定义数据库、基本表、视图和索引4部分。
2.数据操纵:这一部分又称为“SQL DML”,其中包括数据查询和数据更新两大类操作,其中数据更新又包括插入、删除和更新三种操作。
3.数据控制:对用户访问数据的控制有基本表和视图的授权、完整性规则的描述,事务控制语句等。
4.嵌入式SQL语言的使用规定:规定SQL语句在宿主语言的程序中使用的规则。
下面我们将分别介绍: SQL数据定义功能包括定义数据库、基本表、索引和视图。
首先,让我们了解一下SQL所提供的基本数据类型:(如^00100009b^)
1.数据库的建立与删除
(1)建立数据库:数据库是一个包括了多个基本表的数据集,其语句格式为:
CREATE DATABASE <数据库名> 〔其它参数〕
其中,<数据库名>在系统中必须是唯一的,不能重复,不然将导致数据存取失误。〔其它参数〕因具体数据库实现系统不同而异。
例:要建立项目管理数据库(xmmanage),其语句应为:
CREATE DATABASE xmmanage
(2)数据库的删除:将数据库及其全部内容从系统中删除。
其语句格式为:DROP DATABASE <数据库名>
例:删除项目管理数据库(xmmanage),其语句应为: DROP DATABASE xmmanage
2.基本表的定义及变更
本身独立存在的表称为基本表,在SQL语言中一个关系唯一对应一个基本表。基本表的定义指建立基本关系模式,而变更则是指对数据库中已存在的基本表进行删除与修改。 SQL是一种查询功能很强的语言,只要是数据库存在的数据,总能通过适当的方法将它从数据库中查找出来。SQL中的查询语句只有一个:SELECT,它可与其它语句配合完成所有的查询功能。SELECT语句的完整语法,可以有6个子句。完整的语法如下: SELECT 目标表的列名或列表达式集合 FROM 基本表或(和)视图集合 〔WHERE条件表达式〕 〔GROUP BY列名集合 〔HAVING组条件表达式〕〕 〔ORDER BY列名〔集合〕…〕
简单查询,使用TOP子句
查询结果排序order by
带条件的查询where,使用算术表达式,使用逻辑表达式,使用between关键字,使用in关键字,
模糊查询like
整个语句的语义如下:从FROM子句中列出的表中,选择满足WHERE子句中给出的条件表达式的元组,然后按GROUPBY子句(分组子句)中指定列的值分组,再提取满足HAVING子句中组条件表达式的那些组,按SELECT子句给出的列名或列表达式求值输出。ORDER子句(排序子句)是对输出的目标表进行重新排序,并可附加说明ASC(升序)或DESC(降序)排列。 在WHERE子句中的条件表达式F中可出现下列操作符和运算函数: 算术比较运算符:<,<=,>,>=,=,<>。 逻辑运算符:AND,OR,NOT。 集合运算符:UNION(并),INTERSECT(交),EXCEPT(差)。 集合成员资格运算符:IN,NOT IN 谓词:EXISTS(存在量词),ALL,SOME,UNIQUE。 聚合函数:AVG(平均值),MIN(最小值),MAX(最大值),SUM(和),COUNT(计数)。 F中运算对象还可以是另一个SELECT语句,即SELECT语句可以嵌套。 上面只是列出了WHERE子句中可出现的几种主要操作,由于WHERE子句中的条件表达式可以很复杂,因此SELECT句型能表达的语义远比其数学原形要复杂得多。 下面,我们以上面所建立的三个基本表为例,演示一下SELECT的应用: 1.无条件查询 例:找出所有学生的的选课情况 SELECT st_no,su_no FROM score 例:找出所有学生的情况 SELECT* FROM student “*”为通配符,表示查找FROM中所指出关系的所有属性的值。 2.条件查询 条件查询即带有WHERE子句的查询,所要查询的对象必须满足WHERE子句给出的条件。 例:找出任何一门课成绩在70以上的学生情况、课号及分数 SELECT UNIQUE student.st_class,student.st_no,student.st_name,student.st_sex,student.st_age,score.su_no,score.score FROM student,score WHERE score.score>=70 AND score.stno=student,st_no 这里使用UNIQUE是不从查询结果集中去掉重复行,如果使用DISTINCT则会去掉重复行。另外逻辑运算符的优先顺序为NOT→AND→OR。 例:找出课程号为c02的,考试成绩不及格的学生 SELECT st_no FROM score WHERE su_no=‘c02’AND score<60 3.排序查询 排序查询是指将查询结果按指定属性的升序(ASC)或降序(DESC)排列,由ORDER BY子句指明。 例:查找不及格的课程,并将结果按课程号从大到小排列 SELECT UNIQUE su_no FROM score WHERE score<60 ORDER BY su_no DESC 4.嵌套查询 嵌套查询是指WHERE子句中又包含SELECT子句,它用于较复杂的跨多个基本表查询的情况。 例:查找课程编号为c03且课程成绩在80分以上的学生的学号、姓名 SELECT st_no,st_name FROM student WHERE stno IN (SELECT st_no FROM score WHERE su_no=‘c03’ AND score>80 ) 这里需要明确的是:当查询涉及多个基本表时用嵌套查询逐次求解层次分明,具有结构程序设计特点。在嵌套查询中,IN是常用到的谓词。若用户能确切知道内层查询返回的是单值,那么也可用算术比较运算符表示用户的要求。 5.计算查询 计算查询是指通过系统提供的特定函数(聚合函数)在语句中的直接使用而获得某些只有经过计算才能得到的结果。常用的函数有: COUNT(*) 计算元组的个数 COUNT(列名) 对某一列中的值计算个数 SUM(列名) 求某一列值的总和(此列值是数值型) AVG(列名) 求某一列值的平均值(此列值是数值型) MAX(列名) 求某一列值中的最大值 MIN(列名) 求某一列值中的最小值 例:求男学生的总人数和平均年龄 SELECT COUNT(*),AVG(st_age) FROM student WHERE st_sex=‘男’ 例:统计选修了课程的学生的人数 SELECT COUNT(DISTINCT st_no) FROM score 注意:这里一定要加入DISTINCT,因为有的学生可能选修了多门课程,但统计时只能按1人统计,所以要使用DISTINCT进行过滤。 由于数据库管理系统是一个多用户系统,为了控制用户对数据的存取权利,保持数据的共享及完全性,SQL语言提供了一系列的数据控制功能。其中,主要包括安全性控制、完整性控制、事务控制和并发控制。 1.安全性控制 数据的安全性是指保护数据库,以防非法使用造成数据泄露和破坏。保证数据安全性的主要方法是通过对数据库存取权力的控制来防止非法使用数据库中的数据。即限定不同用户操作不同的数据对象的权限。 存取权控制包括权力的授予、检查和撤消。权力授予和撤消命令由数据库管理员或特定应用人员使用。系统在对数据库操作前,先核实相应用户是否有权在相应数据上进行所要求的操作。 (1)权力授予:权力授有数据库管理员专用的授权和用户可用的授权两种形式。数据库管理员专用授权命令格式如下: |CONNECT | GRANT|RESOURCE|TO 用户名〔IDENTIFED BY 口令〕 |DBA | 其中,CONNECT表示数据库管理员允许指定的用户具有连接到数据库的权力,这种授权是针对新用户;RESOURCE表示允许用户建立自己的新关系模式,用户获得CONNECT权力后,必须获得RESOURCE权力才能创建自己的新表;DBA表示数据库管理员将自己的特权授予指定的用户。若要同时授予某用户上述三种授权中的多种权力,则必须通过三个相应的GRANT命令指定。 另外,具有CONNECT和RESOURCE授权的用户可以建立自己的表,并在自己建立的表和视图上具有查询、插入、修改和删除的权力。但通常不能使用其他用户的关系,除非能获得其他用户转授给他的相应权力。 例:若允许用户SSE连接到数据库并可以建立他自己的关系,则可通过如下命令授予权力: GRANT CONNECT TO SSE INENTIFIED BY BD1928 GRANT RESOURCE TO SSE 用户可用的授权是指用户将自己拥有的部分或全部权力转授给其他用户的命令形式,其命令格式如下: |SELECT | |INSERT | |DELETE | GRANT|UPDATE(列名1[,列名2]…)|ON|表名 |TO|用户名|〔WITH GRANT OPTION〕 |ALTER | |视图名| |PUBLIC| |NDEX | |ALL | 若对某一用户同时授予多种操作权力,则操作命令符号可用“,”相隔。 PUBLIC 表示将权力授予数据库的所有用户,使用时要注意: 任选项WITH GRANT OPTION表示接到授权的用户,具有将其所得到的同时权力再转授给其他用户权力。 例:如果将表student的查询权授予所有用户,可使用以下命令: GRANT SELECT ON student TO PUBLIC 例:若将表subject的插入及修改权力授予用户SSE并使得他具有将这种权力转授他人的权力,则可使用以下命令: GRANT INSERT,UPDATE(su_subject) ON subject TO SSE WITH GRANT OPTION 这里,UPDATE后面跟su_subject是指出其所能修改的列。 (2)权力回收:权力回收是指回收指定用户原已授予的某些权力。与权力授予命令相匹配,权力回收也有数据库管理员专用和用户可用的两种形式。 DBA专用的权力回收命令格式为: |CONNECT | REVOKE|RESOURCE|FROM用户名 |DBA | 用户可用的权力回收命令格式为: |SELECT | |INSERT | |DELETE | REVOKE|UPDATE(列名1〔,列名2〕…) |ON|表名 |FROM |用户名| |ALTER | |视图名| |PUBLIC| |INDEX | |ALL | 例:回收用户SSE的DBA权力: REVOKE DBA FROM SSE 2.完整性控制 数据库的完整性是指数据的正确性和相容性,这是数据库理论中的重要概念。完整性控制的主要目的是防止语义上不正确的数据进入数据库。关系系统中的完整性约束条件包括实体完整性、参照完整性和用户定义完整性。而完整性约束条件的定义主要是通过CREATE TABLE语句中的〔CHECK〕子句来完成。另外,还有一些辅助命令可以进行数据完整性保护。如UNIQUE和NOT NULL,前者用于防止重复值进入数据库,后者用于防止空值。 3.事务控制 事务是并发控制的基本单位,也是恢复的基本单位。在SQL中支持事务的概念。所谓事务,是用户定义的一个操作序列(集合),这些操作要么都做,要么一个都不做,是一个不可分割的整体。一个事务通常以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。 SQL提供了事务提交和事务撤消两种命令: (1)事务提交:事务提交的命令为: COMMIT 〔WORK〕 事务提交标志着对数据库的某种应用操作成功地完成,所有对数据库的操作都必须作为事务提交给系统时才有效。事务一经提交就不能撤消。 (2)事务撤消:事务撤消的命令是: ROLLBACK 〔WORK〕 事务撤消标志着相应事务对数据库操作失败,因而要撤消对数据库的改变,即要“回滚”到相应事务开始时的状态。 当系统非正常结束时(如掉电、系统死机),将自动执行ROLLBACK命令
SQL数据库的操作
SQL包括了所有对数据库的操作,主要是由4个部分组成:
1.数据定义:这一部分又称为“SQL DDL”,定义数据库的逻辑结构,包括定义数据库、基本表、视图和索引4部分。
2.数据操纵:这一部分又称为“SQL DML”,其中包括数据查询和数据更新两大类操作,其中数据更新又包括插入、删除和更新三种操作。
3.数据控制:对用户访问数据的控制有基本表和视图的授权、完整性规则的描述,事务控制语句等。
4.嵌入式SQL语言的使用规定:规定SQL语句在宿主语言的程序中使用的规则。
下面我们将分别介绍: SQL数据定义功能包括定义数据库、基本表、索引和视图。
首先,让我们了解一下SQL所提供的基本数据类型:(如^00100009b^)
1.数据库的建立与删除
(1)建立数据库:数据库是一个包括了多个基本表的数据集,其语句格式为:
CREATE DATABASE <数据库名> 〔其它参数〕
其中,<数据库名>在系统中必须是唯一的,不能重复,不然将导致数据存取失误。〔其它参数〕因具体数据库实现系统不同而异。
例:要建立项目管理数据库(xmmanage),其语句应为:
CREATE DATABASE xmmanage
(2)数据库的删除:将数据库及其全部内容从系统中删除。
其语句格式为:DROP DATABASE <数据库名>
例:删除项目管理数据库(xmmanage),其语句应为: DROP DATABASE xmmanage
2.基本表的定义及变更
本身独立存在的表称为基本表,在SQL语言中一个关系唯一对应一个基本表。基本表的定义指建立基本关系模式,而变更则是指对数据库中已存在的基本表进行删除与修改。 SQL是一种查询功能很强的语言,只要是数据库存在的数据,总能通过适当的方法将它从数据库中查找出来。SQL中的查询语句只有一个:SELECT,它可与其它语句配合完成所有的查询功能。SELECT语句的完整语法,可以有6个子句。完整的语法如下: SELECT 目标表的列名或列表达式集合 FROM 基本表或(和)视图集合 〔WHERE条件表达式〕 〔GROUP BY列名集合 〔HAVING组条件表达式〕〕 〔ORDER BY列名〔集合〕…〕
简单查询,使用TOP子句
查询结果排序order by
带条件的查询where,使用算术表达式,使用逻辑表达式,使用between关键字,使用in关键字,
模糊查询like
整个语句的语义如下:从FROM子句中列出的表中,选择满足WHERE子句中给出的条件表达式的元组,然后按GROUPBY子句(分组子句)中指定列的值分组,再提取满足HAVING子句中组条件表达式的那些组,按SELECT子句给出的列名或列表达式求值输出。ORDER子句(排序子句)是对输出的目标表进行重新排序,并可附加说明ASC(升序)或DESC(降序)排列。 在WHERE子句中的条件表达式F中可出现下列操作符和运算函数: 算术比较运算符:<,<=,>,>=,=,<>。 逻辑运算符:AND,OR,NOT。 集合运算符:UNION(并),INTERSECT(交),EXCEPT(差)。 集合成员资格运算符:IN,NOT IN 谓词:EXISTS(存在量词),ALL,SOME,UNIQUE。 聚合函数:AVG(平均值),MIN(最小值),MAX(最大值),SUM(和),COUNT(计数)。 F中运算对象还可以是另一个SELECT语句,即SELECT语句可以嵌套。 上面只是列出了WHERE子句中可出现的几种主要操作,由于WHERE子句中的条件表达式可以很复杂,因此SELECT句型能表达的语义远比其数学原形要复杂得多。 下面,我们以上面所建立的三个基本表为例,演示一下SELECT的应用: 1.无条件查询 例:找出所有学生的的选课情况 SELECT st_no,su_no FROM score 例:找出所有学生的情况 SELECT* FROM student “*”为通配符,表示查找FROM中所指出关系的所有属性的值。 2.条件查询 条件查询即带有WHERE子句的查询,所要查询的对象必须满足WHERE子句给出的条件。 例:找出任何一门课成绩在70以上的学生情况、课号及分数 SELECT UNIQUE student.st_class,student.st_no,student.st_name,student.st_sex,student.st_age,score.su_no,score.score FROM student,score WHERE score.score>=70 AND score.stno=student,st_no 这里使用UNIQUE是不从查询结果集中去掉重复行,如果使用DISTINCT则会去掉重复行。另外逻辑运算符的优先顺序为NOT→AND→OR。 例:找出课程号为c02的,考试成绩不及格的学生 SELECT st_no FROM score WHERE su_no=‘c02’AND score<60 3.排序查询 排序查询是指将查询结果按指定属性的升序(ASC)或降序(DESC)排列,由ORDER BY子句指明。 例:查找不及格的课程,并将结果按课程号从大到小排列 SELECT UNIQUE su_no FROM score WHERE score<60 ORDER BY su_no DESC 4.嵌套查询 嵌套查询是指WHERE子句中又包含SELECT子句,它用于较复杂的跨多个基本表查询的情况。 例:查找课程编号为c03且课程成绩在80分以上的学生的学号、姓名 SELECT st_no,st_name FROM student WHERE stno IN (SELECT st_no FROM score WHERE su_no=‘c03’ AND score>80 ) 这里需要明确的是:当查询涉及多个基本表时用嵌套查询逐次求解层次分明,具有结构程序设计特点。在嵌套查询中,IN是常用到的谓词。若用户能确切知道内层查询返回的是单值,那么也可用算术比较运算符表示用户的要求。 5.计算查询 计算查询是指通过系统提供的特定函数(聚合函数)在语句中的直接使用而获得某些只有经过计算才能得到的结果。常用的函数有: COUNT(*) 计算元组的个数 COUNT(列名) 对某一列中的值计算个数 SUM(列名) 求某一列值的总和(此列值是数值型) AVG(列名) 求某一列值的平均值(此列值是数值型) MAX(列名) 求某一列值中的最大值 MIN(列名) 求某一列值中的最小值 例:求男学生的总人数和平均年龄 SELECT COUNT(*),AVG(st_age) FROM student WHERE st_sex=‘男’ 例:统计选修了课程的学生的人数 SELECT COUNT(DISTINCT st_no) FROM score 注意:这里一定要加入DISTINCT,因为有的学生可能选修了多门课程,但统计时只能按1人统计,所以要使用DISTINCT进行过滤。 由于数据库管理系统是一个多用户系统,为了控制用户对数据的存取权利,保持数据的共享及完全性,SQL语言提供了一系列的数据控制功能。其中,主要包括安全性控制、完整性控制、事务控制和并发控制。 1.安全性控制 数据的安全性是指保护数据库,以防非法使用造成数据泄露和破坏。保证数据安全性的主要方法是通过对数据库存取权力的控制来防止非法使用数据库中的数据。即限定不同用户操作不同的数据对象的权限。 存取权控制包括权力的授予、检查和撤消。权力授予和撤消命令由数据库管理员或特定应用人员使用。系统在对数据库操作前,先核实相应用户是否有权在相应数据上进行所要求的操作。 (1)权力授予:权力授有数据库管理员专用的授权和用户可用的授权两种形式。数据库管理员专用授权命令格式如下: |CONNECT | GRANT|RESOURCE|TO 用户名〔IDENTIFED BY 口令〕 |DBA | 其中,CONNECT表示数据库管理员允许指定的用户具有连接到数据库的权力,这种授权是针对新用户;RESOURCE表示允许用户建立自己的新关系模式,用户获得CONNECT权力后,必须获得RESOURCE权力才能创建自己的新表;DBA表示数据库管理员将自己的特权授予指定的用户。若要同时授予某用户上述三种授权中的多种权力,则必须通过三个相应的GRANT命令指定。 另外,具有CONNECT和RESOURCE授权的用户可以建立自己的表,并在自己建立的表和视图上具有查询、插入、修改和删除的权力。但通常不能使用其他用户的关系,除非能获得其他用户转授给他的相应权力。 例:若允许用户SSE连接到数据库并可以建立他自己的关系,则可通过如下命令授予权力: GRANT CONNECT TO SSE INENTIFIED BY BD1928 GRANT RESOURCE TO SSE 用户可用的授权是指用户将自己拥有的部分或全部权力转授给其他用户的命令形式,其命令格式如下: |SELECT | |INSERT | |DELETE | GRANT|UPDATE(列名1[,列名2]…)|ON|表名 |TO|用户名|〔WITH GRANT OPTION〕 |ALTER | |视图名| |PUBLIC| |NDEX | |ALL | 若对某一用户同时授予多种操作权力,则操作命令符号可用“,”相隔。 PUBLIC 表示将权力授予数据库的所有用户,使用时要注意: 任选项WITH GRANT OPTION表示接到授权的用户,具有将其所得到的同时权力再转授给其他用户权力。 例:如果将表student的查询权授予所有用户,可使用以下命令: GRANT SELECT ON student TO PUBLIC 例:若将表subject的插入及修改权力授予用户SSE并使得他具有将这种权力转授他人的权力,则可使用以下命令: GRANT INSERT,UPDATE(su_subject) ON subject TO SSE WITH GRANT OPTION 这里,UPDATE后面跟su_subject是指出其所能修改的列。 (2)权力回收:权力回收是指回收指定用户原已授予的某些权力。与权力授予命令相匹配,权力回收也有数据库管理员专用和用户可用的两种形式。 DBA专用的权力回收命令格式为: |CONNECT | REVOKE|RESOURCE|FROM用户名 |DBA | 用户可用的权力回收命令格式为: |SELECT | |INSERT | |DELETE | REVOKE|UPDATE(列名1〔,列名2〕…) |ON|表名 |FROM |用户名| |ALTER | |视图名| |PUBLIC| |INDEX | |ALL | 例:回收用户SSE的DBA权力: REVOKE DBA FROM SSE 2.完整性控制 数据库的完整性是指数据的正确性和相容性,这是数据库理论中的重要概念。完整性控制的主要目的是防止语义上不正确的数据进入数据库。关系系统中的完整性约束条件包括实体完整性、参照完整性和用户定义完整性。而完整性约束条件的定义主要是通过CREATE TABLE语句中的〔CHECK〕子句来完成。另外,还有一些辅助命令可以进行数据完整性保护。如UNIQUE和NOT NULL,前者用于防止重复值进入数据库,后者用于防止空值。 3.事务控制 事务是并发控制的基本单位,也是恢复的基本单位。在SQL中支持事务的概念。所谓事务,是用户定义的一个操作序列(集合),这些操作要么都做,要么一个都不做,是一个不可分割的整体。一个事务通常以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。 SQL提供了事务提交和事务撤消两种命令: (1)事务提交:事务提交的命令为: COMMIT 〔WORK〕 事务提交标志着对数据库的某种应用操作成功地完成,所有对数据库的操作都必须作为事务提交给系统时才有效。事务一经提交就不能撤消。 (2)事务撤消:事务撤消的命令是: ROLLBACK 〔WORK〕 事务撤消标志着相应事务对数据库操作失败,因而要撤消对数据库的改变,即要“回滚”到相应事务开始时的状态。 当系统非正常结束时(如掉电、系统死机),将自动执行ROLLBACK命令
如何使用sql语句备份和恢复mysql数据库
一般使用的命令: mysqlmp --quick --database ondemand1 --u root >bacqup.sql 这样就能把数据库中ondemand1的表全部备份出来。 其中参数的格式是:--(两横杠,不是我们常用的单横杠) quick是在数据比较多的时候,不用该参数的话,所有的数据都会先在内存缓存,接着才导出,这样会导致服务器运行减慢! --u 必须要加一个用户名,否则系统会提示你进不了ODBC数据库的。 >backup.sql则是你备份数据库的目标文件名
数据导入: 可以使用MySQL-Front工具把上面导出的backup.sql数据库导入执行。
以下导入方法未测试是否可行!
如何使用mysql workbench通过sql语句进行数据库操作
两种种使用mysqlcheck tablerepair table sql语句另种使用MySQL提供myisamchk, isamchk数据检测恢复工具前者使用起比较简便推荐使用 一. check table repair table 登陆mysql 终端: mysql -uxxxxx -p dbname check table tabTest; 现结说StatusOK则用修复Error用: repair table tabTest; 进行修复修复用check table命令进行检查新版本phpMyAdmin面使用check/repair功能 二. myisamchk, isamchk 其myisamchk适用于MYISAM类型数据表isamchk适用于ISAM类型数据表两条命令主要参数相同般新系统都使用MYISAM作缺省数据表类型myisamchk例进行说明发现某数据表现问题使用: myisamchk tablename.MYI 进行检测需要修复使用: myisamchk -of tablename.MYI 关于myisamchk详细参数说明参见使用帮助需要注意进行修改必须确保MySQL服务器没访问数据表保险情况进行检测MySQL服务器Shutdown掉 ----------------------------- 另外面命令放rc.local面启MySQL服务器前: [ -x /tmp/mysql.sock ] && /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI 其/tmp/mysql.sockMySQL监听Sock文件位置于使用RPM安装用户应该/var/lib/mysql/mysql.sock于使用源码安装则/tmp/mysql.sock根据自实际情况进行变更pathtochk则myisamchk所位置DATA_DIRMySQL数据库存放位置 需要注意打算条命令放rc.local面必须确认执行条指令MySQL服务器必须没启检测修复所数据库(表