首页数据库数据库常用命令(SQL数据库常用命令及语法举例)

数据库常用命令(SQL数据库常用命令及语法举例)

编程之家2023-10-1985次浏览

大家好,感谢邀请,今天来为大家分享一下数据库常用命令的问题,以及和SQL数据库常用命令及语法举例的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

数据库常用命令(SQL数据库常用命令及语法举例)

数据库增删改查的基本命令

以下是总结的mysql的常用语句,欢迎指正和补充~

一、创建库,删除库,使用库

1.创建数据库:create database库名;

2.删除数据库:drop database库名;

3.使用数据库:use库名;

二、创建数据表

数据库常用命令(SQL数据库常用命令及语法举例)

1.创建表语句:create table表名(字段名1字段类型字段约束,字段2字段类型字段约束...);

2.创建与现有表一样字段的新表:create table表名 like已有表名;

3.将查询结果创建新表:create table表名 select* from现有表 where...(查询语句);

三、查看表结构,查看建表语句,删除表

1.查看表结构:desc表名;

2.查看建表语句:show create table表名;

数据库常用命令(SQL数据库常用命令及语法举例)

3.删除表:drop table表名;

四、修改表结构

1.对数据表重命名:alter table表名 rename新表名;

2.增加字段:alter table表名 add字段名字段类型字段约束;(PS:可用first/after函数调整字段位置)

3.删除字段:alter table表名 drop字段名;

4.修改字段类型及约束:alter table表名 modify字段名新类型新约束;(PS:如不加新约束,会将建表时的约束清空,主键、外键、唯一约束除外)

5.修改字段名称:alter table表名 change字段名新字段名新字段类型新约束条件;

6.修改数据库引擎:alter table表名 engine=;(PS:主要有InnoDB和MyISAM,InnoDB对经常修改表数据友好,MyISAM对经常查询表友好)

7.增加主键:alter table表名 add primary key(字段名);

8.删除主键:alter table表名 drop primary key;

9.增加外键:alter table表名 add constraint外键名 foreign kek(字段名) references主表(主键);

10.删除外键:alter table表名 drop foreign key外键名;

11.删除唯一约束:alter table表名 drop index字段名;

12.设置自动增长的初始位置:alter table表名 auto_increment=n;

五、向表中插入数据

1.向表指定字段插入多条数据:insert into表名(字段1,字段2...) values(数据1,数据2...),(数据1,数据2...),(数据1,数据2...),(数据1,数据2...);

2.将查询结果插入表:insert into表名 select字段名 from表名(查询语句);

3.加载外部数据到表:Load data local infile‘数据路径’Into table表名 Fields terminated by‘分隔符’Ignored 1 lines;

六、更新表数据、删除表数据

1.更改满足条件的字段数据:update表名 set字段计算1,字段计算2... where条件;

2.删除满足条件的数据:delele from表名 where条件;

3.删除所有数据:方式一:delete from表名;方式二:truncate table表名;方式一会逐条进行删除,速度较慢,方式二直接删除,速度快;另外对自增字段,方式一不能重置自增字段的初始位置,方式二可以重置自增字段的其实位置;

SQL数据库常用命令及语法举例

创建表:

create table表名

(

id char(5) NOT NULL,

name VARCHAR(20) NOT NULL,

dept_name VARCHAR(20) NOT NULL,

salary NUMERIC(8,2),

PRIMARY KEY(id)

);

/* primary key==主键等价于唯一(UNIQUE)且非空(NOT NULL)因为 Mysql里面的自增列,必须要依赖一个主键或者唯一的键。

*/

插入元组:

insert into表名 values(每个属性对应的值);

例如:

insert into xinbiao values(001,'niuniu',math,2345.1);

如果无法添加出现1366错误,则可能是MySQL配置问题

只要找到my.ini文件并查找sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"这句话,将双引号前面{STRICT_TRANS_TABLES,}删除,改成sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",重启一下mysql后即可。前者很严格,不允许向数据库插入空值,所以就会有Value后面那个单引号。

删除所有元组:

delete from表名;

删除表:

drop table表名;

删除了表,进行select查询时会出现表名无效的错误。

属性操作

添加属性:

alter table表名 add新属性数据类型,新属性数据类型,...;

例:alter table xinbiao add shuxing1 varchar(20),shuxing2 varchar(20);

删除属性:

alter table表名 drop属性,...;

例:alter table xinbiao drop shuxing1,shuxing2;

查询语句基础结构

select对应投影

from对应笛卡尔积

where对应选择σ

含义:

(1).为from子句列出的关系产生笛卡尔积。

(2).在(1)的结果上应用where子句中指定的谓词(条件)。

(3).对于(2)中的元组,输出select子句中指定的属性。

select*(属性1,属性2,...)【字段名】

from关系名1,关系名2,...【表名】

where条件1 and条件2 and...;【条件】

例如:

Select id,name,salary

From xinbiao

Where salary>1000;

去重操作(distinct)

·对于一些属性来说,在某些元组中存在相同的值,有时我们需要对结果去重,得到正确答案。

Select distinct属性名【就是字段名】

From关系名【就是表名】

Where条件

例如:当我们想要查看系名时,多个老师可能位于同一个系,不去重将产生下列结果:

显然这不是我们想要的答案。我们只需要知道存在哪些系,而无需知道个数:

更名操作(as)

·优点

方便:长名字变短名字,便于书写语句。

同一关系笛卡尔积:区分属性。

对属性:

Select字段 as字段别名,...

From表名

Where条件

例:

Select name as instructor_name,salary

From xinbiao

Where salary>3500

结果如下:

对关系:

Select字段,...

From表名 as表名别名,...

Where条件

例:

Select i1.id,i2.name

From xinbiao as i1, xinbiao as i2

Where i1.id=i2.id and salary>3500

结果如下

字符串运算(like)

· SQL使用一对单引号来标示字符串,例‘math’。

·百分号(%):匹配任意子串

下划线(_):匹配任意一个字符

select字段

from表名

where字段 like'字符形式';

例:LIKE'AACC%'

以AACC开头的所有信息

显示次序(order by)

·默认升序:asc

·降序:desc

Select字段

From表名

Where条件

Order by字段升序/降序

between⋯⋯and⋯⋯

·属性值介于某个范围内

select* from xinbiao where属性名 between... and...;

select*from xinbiao where salary between 3000 and 6000;

结果如下

分组聚集(group by)

·聚集函数:平均值(avg)、最小值(min)、最大值(max)、总和(sum)、计数(count)。

·出现在select语句中但没有被聚集的属性只能是出现在group by子句中的属性。

having子句(出现group by时使用)

·有group by时,select和 having子句中出现的属性有所限制。

·任何出现在having子句中,但没有被聚集的属性必须出现在group by子句中。

正确查询:

select dept_name,avg(salary) as avg_salary from xinbiao group by dept_name having avg(salary)>3000

结果如下

集合成员资格

· in:测试元组是否是集合的成员

· not in:测试元组是否不是集合的成员

· in和 not in操作符用于枚举集合。

例:

select* from xinbiao where name not in('ai','ye','er');

结果如下

集合的比较

>some:至少比某一个要大

>all:比所有的都大。

>some、<some、>=some、<=some、<>some

>all、<all、>=all、<=all

=some等价于in,<>some并不等价于not in。

<>all等价于not in,=all不等价于in。

空关系测试(exists)

EXISTS在SQL中的作用是:检验查询是否返回数据。

·存在exists是相对于某一条元组,因而子查询中是select*。

例:查询在2009年秋季学期和2010年春季学期同时开课的所有课程

select course_id

from section as S

where semester='Fall' and year=2009 and exists(select*

from section as T

where semester='Spring' and year=2010

and S.course_id=T.course_id

);

删除某些元组

例:从instructor关系中删除与‘math’系教师有关的所有元组

delete from instructor where dept_name='math';

删除所有元组

delete from instructor;

插入一些元组

· insert into关系名 values(⋯⋯);一次只能插入一条元组。

· insert into关系名 selec查询语句可一次性插入多条。

更新元组

update表名set语句where条件;

例:只给工资低于7000元的教师涨工资。

update instructor2set salary=salary*1.05;where salary<7000;

给工资低于7000的教师涨5%,大于7000的涨3%

update instructor2set salary=case

when salary<=7000 then salary*1.05

else salary*1.03

end

SQL 数据库常用命令及语法举例

SQL2000常用命令,语法使用方法

(1)数据记录筛选:

sql="select* from数据表 where字段名=字段值 order by字段名 [desc]"

sql="select* from数据表 where字段名 like'%字段值%' order by字段名 [desc]"

sql="select top 10* from数据表 where字段名 order by字段名 [desc]"

sql="select* from数据表 where字段名 in('值1','值2','值3')"

sql="select* from数据表 where字段名 between值1 and值2"

(2)更新数据记录:

sql="update数据表 set字段名=字段值 where条件表达式"

sql="update数据表 set字段1=值1,字段2=值2……字段n=值n where条件表达式"

(3)删除数据记录:

sql="delete from数据表 where条件表达式"

sql="delete from数据表"(将数据表所有记录删除)

(4)添加数据记录:

sql="insert into数据表(字段1,字段2,字段3…) values(值1,值2,值3…)"

sql="insert into目标数据表 select* from源数据表"(把源数据表的记录添加到目标数据表)

(5)数据记录统计函数:

AVG(字段名)得出一个表格栏平均值

COUNT(*|字段名)对数据行数的统计或对某一栏有值的数据行数统计

MAX(字段名)取得一个表格栏最大的值

MIN(字段名)取得一个表格栏最小的值

SUM(字段名)把数据栏的值相加

引用以上函数的方法:

sql="select sum(字段名) as别名 from数据表 where条件表达式"

set rs=conn.execute(sql)

用 rs("别名")获取统的计值,其它函数运用同上。

(5)数据表的建立和删除:

CREATE TABLE数据表名称(字段1类型1(长度),字段2类型2(长度)……)

例:CREATE TABLE tab01(name varchar(50),datetime default now())

DROP TABLE数据表名称(永久性删除一个数据表)

4.记录集对象的方法:

rs.movenext将记录指针从当前的位置向下移一行

rs.moveprevious将记录指针从当前的位置向上移一行

rs.movefirst将记录指针移到数据表第一行

rs.movelast将记录指针移到数据表最后一行

rs.absoluteposition=N将记录指针移到数据表第N行

rs.absolutepage=N将记录指针移到第N页的第一行

rs.pagesize=N设置每页为N条记录

2、更改表格

ALTER TABLE table_name

ADD COLUMN column_name DATATYPE

说明:增加一个栏位(没有删除某个栏位的语法。

ALTER TABLE table_name

ADD PRIMARY KEY(column_name)

说明:更改表得的定义把某个栏位设为主键。

ALTER TABLE table_name

DROP PRIMARY KEY(column_name)

说明:把主键的定义删除。

3、建立索引

CREATE INDEX index_name ON table_name(column_name)

说明:对某个表格的栏位建立索引以增加查询时的速度。

4、删除

DROP table_name

DROP index_name

二、的资料形态 DATATYPEs

smallint

16位元的整数。

interger

32位元的整数。

decimal(p,s)

p精确值和 s大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数

点后有几位数。如果没有特别指定,则系统会设为 p=5; s=0。

float

32位元的实数。

double

64位元的实数。

char(n)

n长度的字串,n不能超过 254。

varchar(n)

长度不固定且其最大长度为 n的字串,n不能超过 4000。

graphic(n)

和 char(n)一样,不过其单位是两个字元 double-bytes, n不能超过127。这个形态是为

了支援两个字元长度的字体,例如中文字。

vargraphic(n)

可变长度且其最大长度为 n的双字元字串,n不能超过 2000。

date

包含了年份、月份、日期。

time

包含了小时、分钟、秒。

timestamp

包含了年、月、日、时、分、秒、千分之一秒。

三、资料操作 DML(Data Manipulation Language)

资料定义好之后接下来的就是资料的操作。资料的操作不外乎增加资料(insert)、查询资料(query)、更改资料(update)、删除资料(delete)四种模式,以下分别介绍他们的语法:

1、增加资料:

INSERT INTO table_name(column1,column2,...)

valueS( value1,value2,...)

说明:

1.若没有指定column系统则会按表格内的栏位顺序填入资料。

2.栏位的资料形态和所填入的资料必须吻合。

3.table_name也可以是景观 view_name。

INSERT INTO table_name(column1,column2,...)

SELECT columnx,columny,... FROM another_table

说明:也可以经过一个子查询(subquery)把别的表格的资料填入。

2、查询资料:

基本查询

SELECT column1,columns2,...

FROM table_name

说明:把table_name的特定栏位资料全部列出来

SELECT*

FROM table_name

WHERE column1= xxx

[AND column2> yyy] [OR column3<> zzz]

三)交叉连接

交叉连接不带WHERE子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数

据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。

例,titles表中有6类图书,而publishers表中有8家出版社,则下列交叉连接检索到的记录数将等

于6*8=48行。

SELECT type,pub_name

FROM titles CROSS JOIN publishers

ORDER BY type

UNION运算符可以将两个或两个以上上SELECT语句的查询结果集合合并成一个结果集合显示,即执行联合查询。UNION的语法格式为:

select_statement

UNION [ALL] selectstatement

[UNION [ALL] selectstatement][…n]

其中selectstatement为待联合的SELECT查询语句。

ALL选项表示将所有行合并到结果集合中。不指定该项时,被联合查询结果集合中的重复行将只保留一

行。

联合查询时,查询结果的列标题为第一个查询语句的列标题。因此,要定义列标题必须在第一个查询语

句中定义。要对联合查询结果排序时,也必须使用第一查询语句中的列名、列标题或者列序号。

在使用UNION运算符时,应保证每个联合查询语句的选择列表中有相同数量的表达式,并且每个查询选

择表达式应具有相同的数据类型,或是可以自动将它们转换为相同的数据类型。在自动转换时,对于数值类

型,系统将低精度的数据类型转换为高精度的数据类型。

在包括多个查询的UNION语句中,其执行顺序是自左至右,使用括号可以改变这一执行顺序。例如:

查询1 UNION(查询2 UNION查询3)

INSERT语句

用户可以用INSERT语句将一行记录插入到指定的一个表中。例如,要将雇员John Smith的记录插入到本例的表中,可以使用如下语句:

INSERT INTO EMPLOYEES valueS

('Smith','John','1980-06-10',

'Los Angles',16,45000);

通过这样的INSERT语句,系统将试着将这些值填入到相应的列中。这些列按照我们创建表时定义的顺序排列。在本例中,第一个值“Smith”将填到第一个列LAST_NAME中;第二个值“John”将填到第二列FIRST_NAME中……以此类推。

我们说过系统会“试着”将值填入,除了执行规则之外它还要进行类型检查。如果类型不符(如将一个字符串填入到类型为数字的列中),系统将拒绝这一次操作并返回一个错误信息。

如果SQL拒绝了你所填入的一列值,语句中其他各列的值也不会填入。这是因为SQL提供对事务的支持。一次事务将数据库从一种一致性转移到另一种一致性。如果事务的某一部分失败,则整个事务都会失败,系统将会被恢复(或称之为回退)到此事务之前的状态。

回到原来的INSERT的例子,请注意所有的整形十进制数都不需要用单引号引起来,而字符串和日期类型的值都要用单引号来区别。为了增加可读性而在数字间插入逗号将会引起错误。记住,在SQL中逗号是元素的分隔符。

同样要注意输入文字值时要使用单引号。双引号用来封装限界标识符。

对于日期类型,我们必须使用SQL标准日期格式(yyyy-mm-dd)

如果你还想了解更多这方面的信息,记得收藏关注本站。

主机外壳(机箱外壳可以换吗)域名解析怎么弄 域名解析该怎么设置