1.数据库介绍

  • 数据库(DataBase,DB),数据库用于存放数据的文件系统

  • 数据库软件系统(DBMS)

  • 关系:用二维表描述实体与实体之间联系

  • 记录:元组,二维表中一个一行数据

  • 字段:列,属性,域,二维表中一个一列

  • 注意事项:

  • 列名必须唯一

  • 列没有顺序

  • 行没有顺序

2.关系数据库

  • Oracle,oracle公司,数据库的性能非常好。收费

  • DB2,IBM公司,性能不错。收费

  • Sql server ,微软 IIS

  • Mysql,Oracle公司。mysql升级,性能优化

3.Mysql的安装

  • 安装指定“数据库文件路径” : %mysql%/data

  • mysql数据的utf-8编码为:utf8

  • mysql的默认端口:3306

  • mysql的超级管理员:root ,安装只需要给root设置密码

  • %mysql%/my.ini文件

  • [mysql]

  • default-character-set=utf8 ,默认编码

  • datadir=“C:/java/MySQL/MySQL Server 5.5/Data/” ,数据库文件路径

4.mysql的登录

  • 前提,必须启动mysql服务

  • windows启动服务:“运行” services.msc

  • 查询mysql的命令参数:mysql -? 或 mysql --help

  • 设置用户名

  • 格式1:-u用户名

  • 格式2:–user=用户名

  • 设置密码:

  • 格式1:-p密码

  • 格式2:–password=密码

  • 设置主机

  • 格式1:-hIP

  • 格式2:–host=IP地址

  • 设置端口号:

  • 格式1:-P端口

  • 格式2:–port=端口

  • 登录格式:

  • 指定书写密码:mysql -uroot -p1234 回车登录

  • 先登录在书写密码:mysql -uroot -p 回车,输入密码回车,登录

5.常用命令

  • 显示所有的数据库:mysql > show databases;

  • 创建数据库将%mysql%/data创建一个文件夹

  • 默认数据库

  • mysql,mysql数据库的核心数据库,【不能删除】

  • performance_schema,mysql提供记录数据的数据库

  • information_schema,视图,虚拟表

  • test,空数据库

  • 使用数据库:mysql > use 数据库名称;

  • 对数据库操作之前必须使用

  • 查询当前数据库中具有的表:mysql > show tables;

  • 确定当前数据库: mysql > select database();

  • 查询表结构:mysql > desc biaomingc:

  • describe

  • 查询数据库支持的字符集:mysql > show character set;

  • 显示当前系统的环境变量,并且只显示编码:mysql > show variables like ‘%char%’;

6.用户管理

  • 创建用户

  • mysql > create user 用户名称 [identified by ‘密码’]

  • 用户名称的格式:‘名称’@‘主机’ ,对应user表,‘mysql.user’@‘mysql.host’

  • 主机可以不指定,默认是%,表示所有人都可以访问

  • 创建用户,就是给mysql数据库的user表添加记录

  • 查询用户表的部分信息

  • mysql > select host,user,password from user;

  • 例如:

  • 添加itcast用户

  • mysql > create user ‘itcast’@‘192.168.1.100’ identified by ‘1234’;

  • 修改用户密码

  • 登录之后,使用set password进行修改

  • mysql > set password for 用户名称 = password(‘1234’);

  • 删除用户l

  • 格式:drop user 用户名称

  • mysql > drop user ‘itcast’@‘192.168.1.100’;

  • 设置权限

  • 授权格式:grant 权限 on 数据库.表 用户名称 with grant option;

  • 权限:all表示所有的权限

  • 数据库.表:*.所有数据库的所有表;mysql.,mysql数据库的所有表;mysql.user,mysql数据库的user表

  • with grant option:表示当前用户可以将自己所具有的权限,再次授权给其他人。

  • 例如:grant all on . to ‘demo’@’%’ with grant option;

  • 取消权限:revoke all privileges ,grant option from 用户名称;

  • 思考:如果mysql,root用户的密码忘记?

  • 关闭mysql服务器(mysqld.ext结束)

  • 使用命令启动mysql服务器

  • cmd > mysqld --console --skip-grant-tables ,可以不使用密码登录,之后将可以设置密码

  • 注意:如果set password不能设置,可以使用update

  • update user set password = password(“1234”) where user=“root” and host="%"

7.mysql异常

  • 服务器没有启动

  • ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)

  • 没有使用数据库,及当前数据库为null

  • ERROR 1046 (3D000): No database selected

  • 解决办法:mysql > use 数据库名;

  • 没有权限

  • ERROR 1044 (42000): Access denied for user ‘demo’@’%’ to database ‘mysql’

  • 启动mysql服务:net start mysql

  • 发生系统错误 3。

  • 系统找不到指定的路径。

  • 原因:没有在添加服务时,将目录切换到bin目录下

  • win7系统是net无法启动

  • 发生系统错误 5。

  • 解决办法:使用超级管理员运行cmd(cmd右键)

8.绿色版mysql的安装

  • 解压mysql-5.5.27-win32.zip

  • 复制my-small.ini,并将名称修改为my.ini

  • 通过命令启动:mysqld --console

  • –console 控制台,将启动信息打印

  • 脚本位置:%mysql%/bin/mysqld.exe

  • 需要配置系统环境变量path,任意位置都可以使用脚本

  • 将mysql配置成windows系统服务

  • 注意:如果要配置系统服务,必须将命令行的目录切换到%mysql%/bin

  • 注册服务:cmd > mysqld --install

  • 移除服务:cmd > mysqld --remove

  • 启动已经成为系统服务服务项(操作系统的命令)

  • 启动服务:cmd > net start mysql

  • 停止服务:cmd > net stop mysql

9.sql介绍

  • sql : SQL被称为结构化查询语言(structured query language)

  • SQL分类

  • DDL,数据定义语言。(结构)

  • 创建:create

  • 修改:alter

  • 删除:drop

  • DML,数据操纵语言(内容)

  • 录入:insert

  • 修改:update

  • 删除:delete

  • DQL,数据查询语言

  • 查询:select

数据库中存放表,表中存放的数据

10.DDL–数据定义语言

  • 数据库(itcast)

  • 创建1:mysql > create database 数据库名称;

  • 创建2:mysql > create database 数据库名称 character set 字符集;

  • 删除: mysql > drop database 数据库名称;

  • 注意:

  • 在创建的数据库目录中db.opt文件

  • default-character-set=latin1 ,数据库使用的默认编码为ISO-8859-1,所以不支持中文

  • 表(users)

  • 注意:先使用数据库

  • 创建:mysql > create table 表名(字段名称1 字段类型1,字段名称2 字段类型2,…);

  • 在帮助文档中可以“data types”

  • 创建user表

create table users(

id varchar(32),

username varchar(50),

age int ,

count double(4,1)

);

  • 修改表名:alter table 表名 rename 新表名;

  • 将表名修改成users

  • mysql > alter table user rename users;

  • 删除表: drop table 表名

  • 字段(id,firstname,secondname,age,count)

  • 添加 : alter table 表名 add [column] 字段名称 字段类型;

  • users表添加一个firstname字段

  • 修改:alter table 表名 change 旧字段名称 字段名称 字段类型;

  • 将字段username重新命名为secondname

  • 删除:alter table 表名 drop [column] 字段名称

  • 类型

  • 字符:(java String)

  • char(n),定长字符

  • varchar(n),变长字符

  • 例如:fengjie --> char(10) 将原有数据,再加3个空格 ; varchar(10) 具体数据的长度

  • 数字

  • int,表示整型

  • double(m,n),表示双精度,m表示所有数字的个数,n表示小数位数。例如:double(5,2), 最大值999.99

  • decimal,表示所有的数字

  • 约束??

11.DML,数据操纵语言

  • 插入数据:insert into 表名[(字段名称1,字段名称2,…) ] values(值1,值2,。。。);

  • 给users表添加一条记录:u001 张 飞 28 97

  • mysql > insert into users values(‘u001’,‘飞’,28,97,‘张’);

  • mysql > insert into users(id,firstname,secondname,age,count) values(‘u002’,‘张’,‘飞2’,85,100);

  • mysql > insert into users(id) values(‘u003’);

  • 注意:

  • 如果使用字符串,数据必须使用引号括起来。建议使用单引号

  • 字段与值必须匹配

  • 如果没有指定字段,则字段将使用默认值,默认值null ,不是"null"

  • 修改数据: update 表名 set 字段名称 = 值 , 字段名称2 = 值2 , … [ where 条件 ]

  • 将u003成绩修改成20

  • mysql > update users set count = 20; # 将所有的程序修改成功20

  • mysql > update users set count = 20 where id = ‘u003’;

  • 删除数据: delete from 表名 [where 条件]

  • 删除u003

  • mysql > delete from users where id = ‘u003’;

  • 注意:不要随意执行 delete from 表名;

12.DQL–数据查询语言

  • 准备数据

  • insert into users(id,firstname,age,secondname,count) values (‘u001’,‘张’,18,‘飞’,60),(‘u002’,‘赵’,20,‘云’,58),(‘u003’,‘关’,22,‘羽’,80),(‘u004’,‘刘’,25,‘备’,98),(‘u006’,‘黄’,18,‘盖’,NULL),(‘u005’,‘王’,12,‘子云’,20),(‘u007’,‘诸葛’,24,‘亮’,100);

  • 使用帮助文档搜索:lock

  • 格式:select 字段1,字段2,… from 表名 [where 条件]

  • 没有条件查询

  • 查询所有

  • mysql > select * from users;

  • mysql > select id,firstname,secondname,age,count from users;

  • 查询部分信息

  • mysql > select firstname,secondname from users;

  • 查询用户编号、姓名,及格(60差值)

  • mysql > select id,firstname,secondname ,count from users;

  • mysql > select id,firstname,secondname ,count - 60 from users;

  • mysql> select id,concat(firstname,secondname) ,count - 60 from users;

  • 修改上面查询显示字段名称,用"姓名"表示姓名,用"及格"表示及格

  • 别名:字段 [as] 别名

  • mysql> select id,concat(firstname,secondname) as 姓名 ,count - 60 及格 from users;

  • mysql> select id,concat(firstname,secondname) as ‘姓 名’ ,count - 60 ‘及 格’ from users;

  • 注意:别名可以不使用引号,但如果别名之间存在空格则必须使用引号

  • 带有条件查询

  • 查询分数等于60的学生

  • mysql > select * from users where count = 60;

  • 查询姓"张"学生

  • mysql > select * from users where firstname = ‘张’;

  • 查询年龄大于18的学生

  • mysql > select * from users where age > 18;

  • 显示分数在60-80的学生 [60,80]

  • mysql > select * from users where count >= 60 and count <= 80;

  • mysql > select * from users where count between 60 and 80;

  • 查询编号为u001和u002的学生

  • mysql > select * from users where id = ‘u001’ or id = ‘u002’;

  • mysql > select * from users where id in (‘u001’,‘u002’);

  • 查询年龄是18或20的学生

  • mysql > select * from users where age = 18 or age = 20;

  • 查询名中含有"云"的学生

  • mysql > select * from users where secondname like ‘%云%’;

  • %表示,某一边字符个数不限定

  • 查询名中第二字还有"云"的学生

  • mysql > select * from users where secondname like ‘_云%’;

  • _表示,一个任意字符

添加数据:mysql> update users set secondname=‘备备云’ where id = ‘u004’;

  • 查询名中第三字还有"云"的学生

  • mysql > select * from users where secondname like ‘__云%’;

添加数据:mysql> update users set secondname =’%’ where id = ‘u007’;

  • 查询包含%特殊符号

  • mysql> select * from users where secondname like ‘%%%’;

  • 注意:可以使用转义字符\

  • 查询分数小于60 或 大于90分的学生

  • mysql> select * from users where count < 60 or count > 90;

  • 查询分数等于60 或者 分数大于90并且年龄大于23

  • mysql> select * from users where count = 60 or count > 90 and age > 23;

  • mysql> select * from users where count = 60 or ( count > 90 and age > 23 ); #建议使用

  • 总结:运算符的优先级, 条件运算符 > and > or

  • 查询没有考试的学生

  • mysql> select * from users where count is null;

  • 聚合函数的使用

  • 有多少条记录

  • mysql > select count(*) from users;

  • mysql > select count(count) from users; # 不计算null值

  • mysql > select count(1) from users; # 推荐

  • 平均成绩

  • mysql > select avg(count) from users;

  • 注意:

  • avg中使用的数字字段

  • 不计算null值

  • 数据准确:mysql > select sum(count)/count(1) from users;

  • 最高成绩

  • mysql > select max(count) from users;

  • 最小年龄

  • mysql > select min(age) from users;

  • 班级总成绩

  • mysql > select sum(count) from users;

  • 查询所有的年龄数

  • mysql> select age from users order by age asc ;

  • order by用于排序:格式:order by 字段 asc | desc

  • mysql> select distinct age from users order by age asc ;

.

  • 分组

  • 添加班级字段(classes)

  • mysql> alter table users add column classes varchar(3);

添加数据

  • update users set classes = ‘1’ where id in (‘u001’,‘u002’,‘u003’,‘u004’);

  • update users set classes = ‘2’ where id in (‘u005’,‘u006’,‘u007’);

  • 查询1班和2班的平均成绩

  • 平均成绩:select sum(count)/count(1) from users;

  • group by进行分组,格式:group by 字段

  • mysql > select sum(count)/count(1) from users group by classes;

  • mysql > select sum(count)/count(1) , classes from users group by classes;

  • mysql > select sum(count)/count(1) as ‘平均成绩’ , classes as ‘班级’ from users group by classes;

  • 错误数据:mysql > select sum(count)/count(1) as ‘平均成绩’ , classes as ‘班级’ ,id from users group by classes;

  • 注意:

  • 如果使用分组,在select查询的字段中,只能使用分组的字段和聚合函数

  • 查询班级的平均成绩为不及格的

select sum(count)/count(1) as avg ,classes from users group by classes having avg <=60

  • 分组的条件需要使用having

  • mysql > select sum(count)/count(1) , classes from users group by classes having sum(count)/count(1) <=60 ;

  • mysql > select sum(count)/count(1) as avg , classes from users group by classes having avg <=60 ;

  • 如果不是having

  • 错误数据:mysql > select sum(count)/count(1) <= 60 , classes from users group by classes ;

±--------------------------±--------+

| sum(count)/count(1) <= 60 | classes |

±--------------------------±--------+

| 0 | 1 |

| 1 | 2 |

±--------------------------±--------+

  • 所有的平均成绩:select sum(count)/count(1) as avg , classes from users group by classes;

  • 虚拟的查询结果:select * from demo where avg < 60;

  • 合并

select * from (select sum(count)/count(1) as avg , classes from users group by classes) as demo where demo.avg < 60;

13.中文处理

  • 1.创建数据库时,指定编号:mysql > create database itcast3 character set UTF8;

  • use itcast3;

准备表: create table demo(name varchar(30));

准备数据:insert into demo values(‘凤姐’);

  • 2.临时设置编码:mysql > set names gbk;

  • 总结

  • 查询 mysql> show variables like ‘%char%’;

  • 1.数据库必须支持中文 ,character_set_database | utf8

  • 2.三个编码统一,并且需实际客户端的编码相同(cmd默认编码为gbk)

character_set_client | gbk

character_set_connection | gbk

character_set_results | gbk

操作步骤

  • 创建数据库(支持中文)

  • 创建表

  • 录入数据

  • 查询

  • 转载出处:http://www.iis7.com/c/90/

转载于:https://www.cnblogs.com/ngnntds03/p/10635783.html

sql入门基础知识分享相关推荐

  1. SQL入门基础知识详解

    ////// 导读:科学技术的快速发展正在改变我们的社会,也在不经意间改变着未来人们的职业规划.据媒体预测,数据分析将是未来最重要的工作技能之一.或许不久的将来,一家企业中80%的岗位,都需要数据分析 ...

  2. 数据分析必备——SQL入门基础知识

    数据说·梦想季 一直很喜欢一句话:山鸟与鱼不同路,从此山水不相逢.意思就是如果你现在不够优秀,即使遇见了,也不配拥有-...努力是唯一的方向! // 导读:科学技术的快速发展正在改变我们的社会,也在不 ...

  3. Oracle 10g sql 入门基础知识 笔记 第一部分

    1.orcale 数据库 DDL 定义语言  create drop  DML 操作语言  insert  delete update DCL 控制语言  grant revoke  commit o ...

  4. PCB工程分享:快速了解PCB设计入门基础知识

    PCB板工程师在长期工作实践中,积累了大量的经验.那么今天就来说说PCB设计入门有哪些基础的知识是需要了解的. 1.接线方向:元件的布置方向尽可能与原理图保持一致.布线方向优选地与电路图的布线方向一致 ...

  5. 好程序员web前端教程分享web前端入门基础知识

    好程序员web前端教程分享web前端入门基础知识,作为合格的Web前端工程师必须得掌握HTML.CSS和JavaScript.只懂其中一两个还不行,必须对这三门语言都要熟悉.下面我们一起来看一看吧! ...

  6. 负荷计算的时候assert失败_负荷计算的入门基础知识,小白入门必备!

    负荷计算是电气设计人员必须掌握的一必修课,选导体.设备还有保护开关的选择,电网系统分析,都离不开负荷计算的内容,为此小编特意总结9个负荷计算的入门基础知识,分享给大家,希望能在工作和学习中作为一份参考 ...

  7. ***入门基础知识(超全)

    ***入门基础知识(超全) [sell=2]  DOS 常用命令: dir 列文件名 deltree 删除目录树 cls 清屏 cd 改变当前目录 copy 拷贝文件 diskcopy 复制磁盘 de ...

  8. Python入门基础知识学什么?

    Python基础知识主要是针对一些零基础的同学安排的,虽说Python是相对比较简单的一门编程语言,但是没有基础的同学还是要进行系统的学习,那么Python入门基础知识学什么呢?来看看下面小编的详细介 ...

  9. oracle对查询结果求和_oracle基础知识分享

    原文链接:https://page.om.qq.com/page/OO2PXCD6VZ6CVqLqjpU6uShg0 以下是本人整理的ORACLE学习的一些基本的语法知识,如有不对的地方,望大家批评指 ...

最新文章

  1. 分享一套超棒的iOS “空状态” (empty state) 界面UI设计
  2. 【数学和算法】初识卡尔曼滤波器(二)
  3. 【数据分析】33个热门数据分析软件,你都用过哪些?
  4. python导入自定义模块_Python3 导入自定义的包
  5. 64位系统下一个32位的程序究竟可以申请到多少内存?
  6. qt 串口粘包_用Qt 5写一个串口收发桌面工具
  7. 机器学习算法总结(六)——EM算法与高斯混合模型
  8. Withdrawal symptoms
  9. 全年CCF级别会议列表
  10. 河南自考本科英语可用计算机代替,河南自考选考2至3门专业课可代替英语课程...
  11. 深入浅出的讲解傅里叶变换(真正的通俗易懂)
  12. SAP中复合角色的应用实例
  13. linux 删除swp文件,linux E325: 注意 发现交换文件 *.swp 解决方法
  14. 三方平台管理公众号----创建第三方平台
  15. related knowledge points about protein
  16. 【ARM】程序快速定位segmentation fault core dumped错误
  17. Elasticsearch 文档内容检索插件 ingest attachment 安装
  18. 京东开源人脸识别项目faceX-zoo
  19. 和尚挖井故事给程序员的启示
  20. python 显示界片_任何快速的python图形用户界面都可以显示摄像机的实时图像

热门文章

  1. kafka 脚本发送_Apache-Flink深度解析-DataStream-Connectors之Kafka
  2. netbeans php 断点调试,windows7 + iis7 + fastcgi + php5 + netbeans + xdebug 调试 php
  3. 计算机开题报告参考文献,开题报告中参考文献.docx
  4. python进程间的通信方式三种_Python中的进程间通信
  5. Javascript隐式数据类型转换(==、+、Object)
  6. xfce上安装mysql_在Fedora 33/32系统上安装PostgreSQL 13数据库的说明
  7. html 游戏首页,30个让人玩上瘾的HTML5游戏
  8. java终结方法_java编程思想之并发(终结任务)
  9. layui form模块
  10. promotion failed 和 Concurrent Mode Failure的区别