sql 基础语句

一、数据库管理系统DBMS    软件,        bin        config        db = 保存数据            - admin                -随机字符串 封装了【user,pwd,class】            - course            - school        main or src

    写程序:        a:数据库在本地            1、找到目录            2、添加数据            3、找到数据        b:数据库在远程            1、socket连接上远程机器            2、cocket发送(命令) #add|数据名

    做些什么????        a、            1 程序                程序 socket客户端            2 数据                socket_server            3 制作一套规则                add|增删改查            4 socket:server or client   用户认证  授权  限制

    有人做了DBMS:(就是以上做了什么)        -- SqlServer(收费的)        -- oracle ,sqlite,access。。。        一般都在MySQL

        Mysql:            server端 and client端

二,下载安装    1 下载    2 解压    3 服务器端运行起来        mysqld    4 客户端连接        net start mysql        net stop mysql

三、 mysql数据库:    1 概念        数据表,文件        数据行,文件中的一行数据        数据库,文件夹    2 mysql命令:        show  databases;  查看当前mysql都有哪些数据,根目录都有哪些文件夹        create database;  创建库名,创建文件夹        use 数据库名;      使用选中数据库,进入目录        show tables;     查看当前数据库下都有哪些表        create table 表名(nid int,name 字符串varchar(20 最多20个,如有25 20后面的就扔了),            pwd varchar(64个字符));创建数据库表        select * from 表名‘;  查看表中的所有数据        insert into 表名(nid,name,pwd) values(1,‘alex‘,‘123‘);  插入数据        -- select * from 表名; 查看表中的所有数据

四、用户授权:    用户管理的时候有特殊命令:        创建用户:            create user ‘用户名‘@‘ip地址‘ identified by ‘密码‘;        删除用户:            drop user ‘用户名‘@‘ip地址‘;        修改用户:            rename user ‘用户名‘@‘ip地址‘ to ‘新用户名’@‘ip地址’;        修改密码:            set password for ‘用户名’@‘IP地址’ = Password(‘新密码’)

        登录默认是local     如果是127.0.0.1  的话  需要在-u 后面加上 -t 127.0.0.1 -p   在输入密码登录

    初试:        show databases;             # 查看当前Mysql都有那些数据,根目录都有那些文件夹        create database 数据库名;   # 创建文件夹        use 数据库名;               # 使用选中数据库,进入目录        show tables;                # 查看当前数据库下都有那些表,        create table 表名(nid int,name varchar(20), pwd varchar(64)); # 创建数据库表        select * from 表名;         # 查看表中的所有数据        insert into 表名(nid,name,pwd) values(1,‘alex‘,‘123‘);  # 插入数据        -- select * from 表名;

    权限管理:        grant 权限 on 数据库,表 to ‘用户’@‘ip地址’         --授权       把这个数据库,表 的什么权限  赋给用户        select 查权限        数据库,表            test。tb1  只能查看            test。*    test里的全部            *。*       全部        ‘用户’@‘ip地址’            [email protected]

    ===================重要,远程连接=======================

    a 解放双手 自己不用操作文件  直接将命令发送给mysql服务端 自动操作    b 数据库 表 行    c 开户,授权        没有特殊字符 不用加“”        推荐大家用“”        密码必须用“”  其他的推荐用    d 客户端连接(mysql提供的客户端)        1 mysql -u root -h192.168.1.1 -P 3306 -p            pwd:输入密码

        2   show  databases;  查看当前mysql都有哪些数据,根目录都有哪些文件夹            create database;  创建库名,创建文件夹            use 数据库名;      使用选中数据库,进入目录            show tables;     查看当前数据库下都有哪些表            create table 表名(nid int,name 字符串 varchar(20 最多20个,如有25 20后面的就扔了),                pwd varchar(64个字符));创建数据库表            select * from 表名‘;  查看表中的所有数据            insert into 表名(nid,name,pwd) values(1,‘alex‘,‘123‘);  插入数据            -- select * from 表名; 查看表中的所有数据

        3   ;;;;;;;;;

五、sql语句:    数据库级别        show databases;        create database 数据库名称;        create database 数据库名称 default charset utf8 collate utf8_general_ci;        usr 数据库名称;        drop database 数据库名称

    表级别        show tables;        desc tb1;   看数据库的基本结构

        ***create table tb1(nid int, name varchar(10)); 创建表        create table 表名(            列名 类型  是否可以为空,not null  不可以为空            列名 类型  是否可以为空  null  可以为空        )ENGINE=InnoDB DEFAULT CHARSET=utf8   设置引擎        InnoDB == 事务,原子操作   装逼        事务 就是 a加钱 b减钱   如果a,b 都完成 则事务成立  如果有一个未完成  则失败 返回原点 不加不减  回滚

        默认值, 创建列时可以指定默认值,当插入数据时如果为主动设置 则自动添加默认值            create table tb1(                nid not int null default 2,   不能为空  为空有默认值                num int not null。     不能为空            )NGINE=InnoDB DEFAULT CHARSET=utf8  设置引擎

        ****重要*****        自增:            create table tb1(                nid not int null auto_increment primary key,    auto_increment自增                num int not null。            )NGINE=InnoDB DEFAULT CHARSET=utf8        a 默认值        b 是否可以为空        c 自增列(一张表只能有一个自增列,数字,必须是索引-主键)        d 主键索引:   主键是跟别人不一样  主要的键            create table tb1(                nid not int null auto_increment primary key,     primary key  主键索引                num int not null。            )NGINE=InnoDB DEFAULT CHARSET=utf8            一张表只能有一个主键,也是自增的并且唯一的不能重复的并且不能为null,一般情况下,会将增列设置成主键            1,2,3,4,5,6,7            create table student(                #nid int not null atuo_increment key,   不能为空  自增的一列数据                name varchar(10) not null,                num int not null,                age int,                gender int                primary key(name,num)  两列联合做主键   从约束的角度看            )NGINE=InnoDB DEFAULT CHARSET=utf8            约束:                 name  num age                   a   88   9                   a   99   9                   a   88   0            主键:                不能null                不能重复                一张表只有个主键(可以多列组成主键)            一般用法:                #nid int not null auto_increment key    不能为空  自增的一列数据

            唯一索引:                唯一列可以为null,一张表可以有多个唯一列                1,2,3,4,5,6,7,null

              -- 约束              -- 都叫索引  查找速度都非常快

            最后不能加逗号   否则报错

            drop table tb1;删除表            delete from tb1; 清空表的内容            truncate table tb1;清空内容  有点不一样  性能高  速度快  可以从1开始

            select * from tb1; 查询

        数据行级别  *****重要            select * from tb1; 查询

        外键:            创建外键                create table 表名;                    nid 。。。。                    name 。。。。                    constraint fk_新建表名 foreign key 需要关联的表(列nid) references 和被关联的表(的列nid)                                                比如是公司部门用数字代替 如2               nid列的2  是公关部                                                                      --2是被(被关联表约束)

            还可以直接创建外键 直接创建关联                create table 表名;                    nid 。。。。                    name 。。。。                    constraint fk_新建表名 foreign key (列nid) references 和被关联的表(的列nid)                                        不用写需要关联的表  是因为建立的就是自己的列 只需要写上列即可

            foreign key; 一个部门对多个员工

            两张表建立约束,            防止脏数据的产生  约束

        增加列            alter table 表名 add 列名 类型        删除列            alter table 表名 drop column 类型        修改列            alter table 表名 modify column 列名 类型, -- 类型            alter table 表名 change 原列名 新列名 类型, -- 列名,类型        添加主键            alter table 表名 add primary key(列名);        删除主键            alter table 表名 drop primary key;            alter table 表名 modify 列名 int,drop primary key;        添加外键            alter table 需要关联的表 add constraint 外键名称(形如fk_需要关联的表_被关联的表) foreign key 需要关联的表(列) references 被关联的表(列)        删除外键            alter table 表名 drop foreign 外键名称(形如fk_需要关联的表_被关联的表)        修改默认值就是给某个列增加默认值            ALTER TABLE testalter_tb1 ALTER i SET DEFAULT 1000;                         这个表名           i=列名         等于1000        删除默认值            ALTER TABLE testalter_tb1 ALTER i DROP DEFAULT;

    mysql 基本数据类型        数值:            正数:            bit 二进制 m=表示长度有多少位            tinyint:默认是有符号的                无符号的是正数0-255         创建无符号create table 表名(num int unsigned)                有符号的可能是负数-128-127   创建有符号create table 表名(num int)没有unsigned            smallint            int            bigint            -- 以上都是范围不一样

            小数:            decimal   比如发工资  扣社保  有小数  --精确的  内部存的是字符串                create table tb14(num dacimal(6,2))  最多有6位有效数字  ,2 是有几位小数  如 8888.18  小数后还有就四舍五入            FLOAT     数值越大  越不精准   不靠谱   一般都用不到            DOUBLE    数值越大  越不精准   不靠谱   一般都用不到        字符串:            定长                char  跟其他都有区别   最大255                create table tb13(n char(7))  只会给你留有7位的位置                insert ssss 有面3位是空的  但是是留位置的            变长                create table tb13(n varchar(7))                给你留7个位置  但是用不了  就只会占所写的空间                varchar    最大255                text                mediumtext                longtext            定长浪费空间查找速度快   变长节省空间  查找相对速度慢

        二进制数据:            TinyBlob blob MediumBlob  LongBlob              图片 或者 视频            varchar(65)将上传文件保存在硬盘上  比如保存在D盘   保存路径就可以了   以后用在读取就可以了

        时间:            TATE:                YYYY-MM-DD(1996-12-12)            TIME:                HH:MM:SS(‘-838:59:59‘/‘838:59:59‘)            DATETIME:                YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:29:59   Y)            TIMESTAMP:                YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某时)

        enum枚举:            不重要            单选: 跟excel 有效性 差不多            集合 :SET但是可以写多个值也就是多选

    *********重点***********    数据行级别        select * from tb1;        insert into 表名(name,age) values(‘alex’,18);

        增:            insert into 表名(name,age) values(‘alex’,18),(‘eric‘,19);插入多条数据                                                            重要在这            create table tb1(                nid int auto_increment primary key,                name varchar(20),                age int)engine=innodb default charset=utf8;            创建好几个表            插入表:                insert into tb1(caption,gender)values(‘alex’,1),(‘eric’,2),。。。。。。。                向把TB1 导入 TB2                只导入前两条                insert 表名(列名,列名,。。。) select 列名,列名,。。。 from 表名;select 不要括号

        删:            delete from 表名 where nid=3 and name=’行的名字‘;   where是查找条件                                        这里            delete from 表名 where nid=3 or name=’行的名字‘;   where是查找条件            有 and or > < >= <= !=

        改:            updata 表名 set age=2;            updata 表名 set age=2 where nid=10;            updata 表名 set name=’opop‘,age=2 where nid>12;            updata 表名 set name=’opop‘,age=2 where nid>12 and 1=1;

        查:select*效率低,  全拿就写一遍列名            select * from 表名 where nid>12 and name=’内容‘;            select name,age,nid from 表名 where nid>12 and name=’内容‘;

    其他:        条件:            Select * from table where id between 5 and 16.   把5-16的数全拿出来        通配符:           Select * from table where name like ‘ale%"- ale开头的所有(多个字符)           Select * from table where name like ‘ale_"- ale开头的所有(一个字符)        分页:            select * from limit 前几条;            select * from limit 起始位置,一次取多少条;            select * from limit 5 offset 4;倒序        排序:            select * from 表名 order by nid asc;asc从小到大   desc从大到小  好记 a到c正序  d到c 倒序            select * from 表名 order by name desc,nid desc;  nid和name都倒序

    ****重要****分组:            select 列名 from 表名 group by 列名;            select 列名,max(列名) from 表名 group by 列名;  max取最大值            select 列名,min(列名) from 表名 group by 列名;  min取最小值            select 列名,sum(列名) from 表名 group by 列名;  sum取和            select 列名,count(列名) from 表名 group by 列名;  count取几个            select 列名,count(列名) as a, from 表名 group by 列名;  count计数                                    a=起名表头            *****重要*****            根据聚和条件筛选不能用where            根据聚和条件筛选应该用having            select 列名 from 表名 group by 列名 having count(列名)>1;

    联合:        select 列名 from 表名 union select 列名 from 表;  打印在一列    默认去重复        select 列名 from 表名 union all select 列名 from 表;  打印在一列                                不去重

    ******最最最最重要******    连表操作:        1.联表形式        select * from 表名,表名;表1 7条数据 表2 4条数据   这样打印,会使表1的7条数据每条打印4遍        select * from 表名,表名 where 表1.列名=表2.列名; 这样打印就可以  把对应的数字代表那个部门  打印出来        2.join        select * from 表名1 left join 表名2 on 表1.列名=表2.列名;那个表在前面就显示全部也就是主表  没有就null            优先用left    left=以左面为主表        select * from 表名1 inner join 表名2 on 表1.列名=表2.列名;                          inner join=永远不出现null,并且那个表在前面都行

。。。。。。。整理重点。。。。。。。。sql 语句pycharm没有语句提示  必须都会    1,数据库的概念,很多软件    2,什么是数据库,表,行    3.服务端运行起来就是个socket server        -启动服务端        -启动客户端        -用户管理        -权限管理

    4.sql语句    数据库操作  *    表操作     **        - 是否可以为空        - 默认值        - 主键        - 外键        - 自增        - 数据类型(char和varchar的区别)    数据行:***** 必须全部会        增删改查  必须会        limit offset  必须会        left join 必须会        order by        group by , having    max,min,sun,count        条件,模糊匹配必须会

原文地址:https://www.cnblogs.com/xuexihainan/p/12543683.html

时间: 2024-11-03 21:57:29

sql 基础语句的相关文章

sql基础语句大集合

每次都习惯于使用SQL Sever直接设计数据库,而没有把对SQL语句引起足够的重视,借这次机房合作版重构的机会,使用SQL语句来一次数据库设计,同时对SQL语句的基本用法做一下梳理. [分类] SQL语句有9种,按照功能划分类别可大体分为4种: 1.查询语句:select ----数据库中最常用用的语句 2.数据定义:create,drop,alter----针对数据库和数据表以及表中的字段进行的操作 3.数据操纵:insert,update,delete----传说中的"增删改查"

SQL基础语句(2)

sqlserver sql语句|经典sql语句|实用sql语句 一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'--- 开始 备份BACKUP DATABASE

SQL基础语句

1.查询MySQL数据库中user表的表结构的语句: desc user; show create table user; show columns for user; describe user;

SQL基础语句汇总

连接数据库 1 mysql -h10.20.66.32 -uroot -p123456 -h后面是mysqlServer所在地址,-u后面是用户名,-p后面是密码 查看数据库 1 show databases; 使用数据库 1 use test; 查看表 1 show tables; 查看表结构 1 desc winton 建表 1 2 3 4 create table t1(     id int not null primary key,      name char(20) not nul

Oracle—SQL基础语句

1 --去除重复行:distinct 2 --作用范围:是后面所有字段的组合 3 select distinct deptno sal from emp; 4 SELECT * FROM emp ORDER BY sal; 5 --(DATE类型)的条件 6 SELECT * FROM emp WHERE hiredate ='17-12月-80'; 7 --使用like模糊查询(%代表0或多个字符,_代表一个字符,特殊字符用ESCAPE标示符查询) 8 SELECT * FROM emp WH

sql的基础语句-sql的查询语句select

SQL查询语句介绍--select语句 1.简单的select查询语句 1.1 查行 SQL> select * from emp; 1.2 查列 SQL> select empno,ename from emp; 1.3 关联查询 oracle的语法: select  a.*,b.*  from emp a,dept b where a.deptno=b.deptno; 通用的语法: select  a.*,b.* from emp a join dept b on(a.deptno = b

15个初学者必看的基础SQL查询语句

本文将分享15个初学者必看的基础SQL查询语句,都很基础,但是你不一定都会,所以好好看看吧. 1.创建表和数据插入SQL 我们在开始创建数据表和向表中插入演示数据之前,我想给大家解释一下实时数据表的设计理念,这样也许能帮助大家能更好的理解SQL查询. 在数据库设计中,有一条非常重要的规则就是要正确建立主键和外键的关系. 现在我们来创建几个餐厅订单管理的数据表,一共用到3张数据表,Item Master表.Order Master表和Order Detail表. 创建表: 创建Item Maste

常见SQL语句和SQL基础知识

引自:http://blog.csdn.net/u012467492/article/details/46790205 SQL语句考察(一) 1.查询出每门课都大于80 分的学生姓名 name   kecheng   fenshu张三    语文       81张三     数学       75李四     语文       76李四     数学       90王五     语文       81王五     数学       100王五     英语       90 A: selec

SQL 基础使用入门(一): SQL简述及DDL语句

SQL 简述 SQL 是 Structure Query Language(结构化查询语言)的缩写,它是关系模型数据库的一门应用语言.经长期发展,SQL语言标准日趋完善,SQL已然成为一种十分受欢迎的多平台交互底层会话语言. SQL语句主要可以划分为以下三个类别: DDL(Data Definition Language)数据定义语言:用于定义不同的数据段.数据库.表.视图.索引等数据库对象.常用语句关键字主要包括create.drop.alter等. DML(Data Manipulation