首页 > 数据库 >SQL学习

SQL学习

时间:2023-01-09 20:55:55浏览次数:51  
标签:-- 数据库 SQL 查询 学习 表名 table 列名

SQL介绍

1.什么是SQL ?

  • Structured Query Languange:结构cmd化查询语言

其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。

2.SQL通用语法

  1. SQL语句可以单行或多行书写,以分号结尾。
  2. 可使用空格和缩进来增强语句的可读性。
  3. MySQL数据库的SQL 语言不区分大小写,关键字建议使用大写。
  4. 3种 注释
  • 单行注释:** -- **注释内容 或 # 注释内容(mysql特有)
  • 多行注释:** /* 注释 /*
  • /*! ... */

5.退出命令

quit;     
exit;
ctrl + Z

3.SQL分类

1.DDL(Data Definition Language)数据定义语言

  • 用来定义数据库对象:数据库、表、列等。关键字:create,drop,alter,show,use等

2.DML(Data Manipulatio Language)数据操作语言

  • 用来对数据库中表的数据进行增删改。关键字:insert,delete,update 等

3.DQL(Data Query Language)数据库查询语言

  • 用来查询数据库中表的记录(数据)。关键字:select,where 等

4.DCL(Data Control Language)数据控制语言(了解)

  • 用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANY,REVOKE 等。

SQL操作

操作数据库

创建

1.创建数据库
2.数据库是不区分大小写ABC001 和 abc001是一样的;
3.命令也不区分大小写;
4.创建数据库的时候,名字的命名,只能是a-z,0-9,_ 组成,不能出现特殊字符,最好也不要用纯粹的0-9来命令,建议使用a-z,更具具体的事物去命名;

create database 数据库名称; --创建数据库
show databases; --显示数据库
drop database 数据库名称; --删除数据库
  • 创建数据库,判断不存在,再创建:
create database if not exists 数据库名称;
  • 创建数据库,并指定字符集
create database 数据库名称 character set 字符集名;
  • 练习:创建db3数据库,判断是否存在,并指定字符集为gbk
create database if not exists db3 character set gbk;
mysql> create database abc003 character set gbk;
Query OK, 1 row affected (0.00 sec)

查询

  • 查询所有数据库名称
show databases;
  • 查询某个数据库的字符集:查询某个数据库的创建语句
show create database 数据库名称;

修改

  • 修改数据库的字符集
alter database 数据库名称 character set 字符集名称;

删除

  • 删除数据库
drop database 数据库名称;

使用

  • 查询当前zhen正在使用的数据库名称
select database(); --查询当前使用的数据库
use 数据库名; --使用该数据库

操作表

use 数据库名称; --使用一个数据库
select database(); --查看当前数据库

show tables; --查看表
desc 表名; --查看列

创建

  • 语法

create table 表名(
列名1 数据类型1,
列名2 数据类型2,
...
列名n 数据类型n
);-- 在创建一个数据表的时候,必须加上列名和数据类型,不然会报错;

最后一列,不需要加逗号

  • 数据类型
1.int:整数类型
age int,-- 用的最多的 默认字符是11个,可以自己手动添加 age int(99); 最大 255
2.double:小数类型
score duoble(7,3) -- 前面大于等于后面
ERROR 1427 (42000): For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column 'score').
3.date:日期,只包含年月日,yyyy-MM-dd
4.datatime:日期,包含年月日时分秒 ,yyyy-MM-dd HH:mm;ss
5.timestamp:时间类型包含年月日时分秒 yyyy-MM-dd HH:mm;ss
如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值
6.varchar:字符串
name varchar(20):姓名最大20的字符 -- varchar后必须定义字符长度,不然会报错
cainiao 7个字符 张三 2个字符
char 
  • 创建表
create table student(
id int,
name varchar(37),
age int,
score double(4,1),
birthday date,
insert_time timestamp
);

create table student(id int(99),name varchar(37),score double(4,1),birthday date,insert_time timestamp);

  • 复制表
create table 表名 like 被复制的表名;

查询

  • 查询某个数据库中所有的表名称
show tables; --查询表
  • 查询表结构
    desc 表名; --查询表中的列结构

修改

  • 修改表名
alter table 表名 rename to 新的表名;
  • 修改表的字符集
alter table 表名 character set 字符集名称;

删除

drop table 表名; --删除表

DDL:修改列

添加一列
alter table 表名 add 列名 数据类型;
修改列名称 类型
alter table 表名 change 列名 新列名 新数据类型;
alter table 表名 modify 列名 新数据类型;
删除列
alter table 表名 drop 列名;
查看列
desc 表名; -- 查看列

DML:增删改表中的数据

1.添加数据:

- 语法:

```mysql
insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
  • 注意:

1.列名和值要一一对应。
2.如果表名后,不定义列名,则默认给所有列添加值。

insert into 表名 values(值1,值2,...值n);

2.删除数据:

  • 语法:
delete from 表名 [where 条件]
delete from abc003 where id=1; -- 删除表abc003列中id=1值
  • 注意:
  1. 如果不加条件,则删除表中所有记录。
  2. 如果要删除所有记录
  • delete from 表名;-- 不推荐使用。有多少条记录就会执行多少次删除操作。
  • TRUNCATE TABLE 表名; -- 推荐使用,效率更高 先删除表,然后再创建一张一样的表。

3.修改数据

  • 语法:
update 表名 set 列名1 = 值1,列名2 = 值2,...[where 条件];
update abc003 set age=99 where id=3; -- 将表abc003中id=3的age的值修改为99

注意:

  • 如果不加任何条件,则会将表中所有记录全部修改。

DQL:查询表中的字段

select * from 表名;

1.语法

select 
  字段列表
from
  表名列表
where 
  条件列表
group by
  分组字段
having
  分组之后的条件
order by
  排序
limit 
  分页限定
group_concat()
  分组查询

2.基础查询

  1.多个字段的查询

select 字段名1,字段名2... from 表名;

注意:

  • 如果查询所有字段,则可以使用*来替代字段列表。

  2.去除重复

distinct
SELECT DISTINCT country FROM Websites;
SELECT * FROM Websites WHERE country='CN'AND alexa > 50;
SELECT * FROM Websites WHERE alexa > 15 AND (country='CN' OR country='USA');

条件查询where

参考链接

标签:--,数据库,SQL,查询,学习,表名,table,列名
From: https://www.cnblogs.com/-Lucky-/p/17037299.html

相关文章

  • C++引用【cherno课程学习】
    定义intmain(){inta=5;int*b=&a;//这个是指针int&ref=a;//这个是引用std::cin.get();}ref变量实际上不存在,只存在于源代码中,如果对......
  • 2023/1/9 20221321杨渝学习打卡
    Python入门学习学习链接:https://www.bilibili.com/video/BV14r4y1k7F9/?spm_id_from=333.999.0.0&vd_source=a989a1afa6cb8b6527dd9bf059d71439输入,输出,计算1.输入:在c语......
  • ABB 800XA学习笔记4:设置windows 2016 server的默认登陆用户
    这一篇学习笔记我在新浪博客发表过,地址是ABB800XA学习笔记04:设置windowsserver2016默认登录用户_来自金沙江的小鱼_新浪博客(sina.com.cn)在这里我保留一份,以免丢失 ......
  • zabbix里面mariaDB(mysql)不允许远程连接数据库的解决办法
    打开文件vi/etc/mysql/mariadb.conf.d/50-server.cnf修改bind-address     =127.0.0.1前面加个#号保存退出 然后mysql-urootusemysql;#打开mysql数据库......
  • 莫队算法学习(转载)
    1.https://blog.csdn.net/Just__Do__IT__/article/details/118991059?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167326430316782428668181%2522%252C%252......
  • ASP.NET Core学习笔记2
    ASP.NETCore学习笔记2 CRUD是指在做计算处理时的增加(Create)、读取(Read)、更新(Update)和删除(Delete)几个单词的首字母简写。Swagger/OpenAPI定义Swagge......
  • CASE WHEN的用法 PGSQL
    selectfive_top,only_five,down_kind,line_road,b_id,CASEWHENonly_five>0THEN1ENDAS五分以内,CASEWHENfive_top>0THEN1ENDAS五分以上fromdtinfo_brea......
  • mysql5.1.73 双主的玩法
    A机:[client]#password=your_passwordport=3306socket=/tmp/mysql.sock#Herefollowsentriesforsomespecificprograms#TheMyS......
  • ABB 800XA学习笔记3:基本配置
    下面的内容我在新浪博客也发表过,地址是ABB80XA学习笔记03:基本配置_来自金沙江的小鱼_新浪博客(sina.com.cn)在这里记录一遍,以免丢失。这边笔记生成的时候,我刚刚开始学习......
  • mysql+nginx+keepalived的高可用玩法
     AB 做负载均衡, CD做负载均衡,ABCD 四个服务器虚拟一个IPkeepalived强制分流到主中心的AB两台机器当主中心停电后,keepalived分流到备中心CD两台机器可以找我帮忙搞哈......