澳门十大赌场最新排名 > 澳门十大赌场 > sql语句进阶教程,快速刷新视图

原标题:sql语句进阶教程,快速刷新视图

浏览次数:130 时间:2019-08-15

转载自:

DECLARE @tableNames varchar(500)
SET @tableNames='xxx,DB2, '   -- 关键此处填写需要刷新视图的数据库名称

本节掌握内容:

  • #### mysql的安装、启动

  • #### mysql破解密码

  • #### 统一字符编码

 

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

 

最近从图书馆借了本介绍SQL的书,打算复习一下基本语法,记录一下笔记,整理一下思路,以备日后复习之用。

DECLARE @i_start int
SET @i_start=1;

mysql是什么?

mysql就是一个基于socket编写的C/S架构的软件

PS:本文适用SQL Server2008语法。

DECLARE @i_end int
SET @i_end = CHARINDEX(',', @tableNames, @i_start);

数据库管理软件分类

图片 1

分两大类:
  关系型:如sqllite,db2,oracle,access,sql server,MySQL,注意:sql语句通用
  非关系型:mongodb,redis,memcache

可以简单的理解为:
    关系型数据库需要有表结构
    非关系型数据库是key-value存储的,没有表结构

图片 2

 

一、关系型数据库和SQL

实际上准确的讲,SQL是一门语言,而不是一个数据库。

什么是SQL呢?简而言之,SQL就是维护和使用关系型数据库中的的数据的一种标准的计算机语言。

DECLARE @tableName varchar(30)

mysql的下载安装

想要使用MySQL来存储并保存数据,则需要做几件事情:

*  a. 安装MySQL服务端   b. 安装MySQL客户端   b. 【客户端】连接【服务端】   c. 【客户端】发送命令给【服务端MySQL】服务的接受命令并执行相应操作(增删改查等)*

下载地址:

https://dev.mysql.com/downloads/mysql/

 

1.1 SQL语言主要有3个主要的组成部分。

  1. DML(Data Manipulation Language)数据操纵语言。这个模块可以让我们检索、修改、增加、删除数据库中的数据。
  2. DDL(Data Definition Language)数据定义语言。是的我们能够创建和修改数据库本身。如:DDL提供ALTER语句,他让我们可以修改数据库中表的设计。
  3. DCL(Data Control Language)数据控制语言,用于维护数据库的安全。

在SQL术语中,记录(record)和字段(field)实际上就称为行(row)和列(column)。

declare @s nvarchar(1000) -- 注意此处改为nvarchar(1000)

window版本

1、官网去下载

图片 3

 

图片 4

 

 图片 5

5.初始化

 

1
mysqld --initialize-insecure

 

 6.启动mysql服务

mysqld #启动MySQL服务

 

7.启动mysql客户端并连接mysql服务端(新开一个cmd窗口)

mysql -u root -p # 连接MySQL服务器

 

上一步解决了一些问题,但不够彻底,因为在执行【mysqd】启动MySQL服务器时,当前终端会被hang住,那么做一下设置即可解决此问题,即将MySQL服务制作成windows服务

图片 6

注意:--install前,必须用mysql启动命令的绝对路径
# 制作MySQL的Windows服务,在终端执行此命令:
"c:mysql-5.6.40-winx64binmysqld" --install

# 移除MySQL的Windows服务,在终端执行此命令:
"c:mysql-5.7.16-winx64binmysqld" --remove


注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:
# 启动MySQL服务
net start mysql

# 关闭MySQL服务
net stop mysql

图片 7

 

1.2 主键和外键

主键之所以有必要:

  • 首先使你唯一标识表中单独的一行。主键确保了唯一性。
  • 可以很容易的将一个表和另一个表关联。
  • 主键一般就会自动默认创建索引,提高了查询速度。

外键就是说A表中的某个字段,同时是B中的主键,那么这个字段就是A表中的外键。希望A表中的这个外键的值必须是B中已经存在的值。

WHILE @i_end>0
BEGIN
  SET @tableName= LTrim(RTrim(SUBSTRING(@tableNames, @i_start, @i_end-@i_start)))
  --select @tableName

windows下登录设置密码

 

打开终端,输入mysql

 图片 8

 

 图片 9

如果想切到root账号登录

执行命令:

mysql -uroot -p

再查看当前用户:

select user();

 图片 10

管理员为root(拥有最高权限,管理员账号),密码为空,以无密码的方式登录了管理员账号,是非常危险的一件事情,所以要为管理员账号设置密码

设置管理员root账号密码为123

C:Usersmjj>mysqladmin -uroot -p password "123"  #设置初始密码 由于原密码为空,因此-p可以不用

 图片 11

ps:⚠️不用管它。翻译为:在命令行界面使用密码不安全,暴露在终端当中。

 

然后再登录账号,不输入密码则会出现如下结果:

图片 12

 

 图片 13

图片 14

 

 

如果想将原始密码123,设置新密码为456

C:Usersmjj>mysqladmin -uroot -p"123" password "456"  #修改mysql密码,因为已经有密码了,所以必须输入原密码才能设置新密码

 依次执行如下操作:

mysql -uroot -p456

select user();

 

1.3 数据类型

一般来讲,有3中重要的数据类型:

  1. 数字(Numeric)
  2. 字符(Character)
  3. 以及日期/时间(Date/Time)

bit是数字型,它只允许两个值,0和1。

字符类型区别^1):

类型 长度 说明
char 固定长度
nchar 固定长度 处理unicode数据类型(所有的字符使用两个字节表示)
varchar 可变长度 效率没char高 灵活
nvarchar 可变长度 处理unicode数据类型(所有的字符使用两个字节表示)
  • 1字节=8位
  • bit就是位,也叫比特位,是计算机表示数据最小的单位。
  • byte就是字节,1byte=8bit,1byte就是1B;
  • 一个字符=2字节;

  if exists(select * from master..sysdatabases where name=@tableName)
  begin
    print '更新 数据库[' @tableName ']所有视图'

密码忘记——破解密码

 

跳过授权方式,直接登录!!

0.以管理员身份打开cmd

 

2.停掉mysql服务端

C:WINDOWSsystem32>net stop mysql
MySQL 服务正在停止.
MySQL 服务已成功停止。

3.执行如下命令跳过授权表

#跳过授权表
C:WINDOWSsystem32>mysqld --skip-grant-tables
2018-06-09 17:12:38 0 [Warning] Insecure configuration for --secure-file-priv: Current value does not restrict location of generated files. Consider setting it to a valid, non-empty path.
2018-06-09 17:12:38 0 [Note] mysqld (mysqld 5.6.40) starting as process 6052 ...4.

 4.再次查看

 图片 15

  1. 现在可以任意的更改密码,执行如下命令

 update mysql.user set authentication_string =password('') where User='root'; 

* *

6.刷新权限,执行命令

flush privileges;

 图片 16

7.退出mysql。执行命令:exit,

 

8.让用户去加载权限,以管理员身份进入cmd,查看当前mysql进程

1
tasklist |findstr mysql  #查看当前mysql的进程

 图片 17

9.杀死当前的进程,执行如下命令

taskkill /F /PID 6052  # 杀死当前的进程pid

图片 18

10.再次执行如下操作,还原

 图片 19

1.3 空值

空值不等于空格或空白。使用NULL表示空值。

    if exists (select * from tempdb.dbo.sysobjects where id = object_id(N'tempdb..#tempTable') and type='U')
    begin
      drop table #tempTable
    end
    create table #tempTable (_sql_ nvarchar(1000))

统一字符编码

进入mysql客户端,执行s

 图片 20

为了统一字符编码,请执行如下操作:

(1)my.ini文件是mysql的配置文件,

在C:mysql-5.6.40-winx64文件下创建my.ini文件

(2)将如下代码拷贝保存。

    

图片 21

#mysql5.5以上:修改方式为
    [mysqld]
    character-set-server=utf8
    collation-server=utf8_general_ci
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8

图片 22

 

(3)以管理员身份重启服务,执行如下命令 

图片 23

C:Windowssystem32>net stop MySQL
MySQL 服务正在停止..
MySQL 服务已成功停止。

C:Windowssystem32>net start MySQL
MySQL 服务正在启动 .
MySQL 服务已经启动成功。

图片 24

(4)在cmd中输入mysql进入mysql环境,执行s,显示如下信息,表示成功

图片 25

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

taskkill /F /PID 6052  # 杀死当前的进程pid

二、简单增删改查

    SET @s = 'USE ' @tableName ' select ''USE ' @tableName ' EXECUTE sp_refreshview '' name from sysobjects where [xtype]=''V'''
    insert into #tempTable(_sql_)
    exec sp_executesql @s

2.1 查(列名有空格的情况)

1
2
SELECT [ last name]
FROM Customers

用方括号将有空格的列名括起来。
PS: MySQL中用重音符`(~)按键。Oracle用双引号。

    ---游标循环遍历--
    declare @temp nvarchar(1000)

查询顺序,SQL执行顺序^2):

1
2
3
4
5
6
Select -1>选择列,-2>distinct,-3>top
  1>…From 表
  2>…Where 条件
  3>…Group by 列
  4>…Having 筛选条件
  6>…Order by 列

    --声明游标
    declare order_cursor cursor

2.2 增

1
2
3
4
5
6
INSERT INTO tablename
(columnlist)
VALUES
(RowValues1)
(RowValues2)
(repeat any number of times)

    for(select * from #tempTable)
    --打开游标--
    open order_cursor
    --开始循环游标变量--
    fetch next from order_cursor into @temp
    while @@FETCH_STATUS = 0 --返回被 FETCH语句执行的最后游标的状态--
    begin
      --print @temp
      exec (@temp) --OK
      --exec sp_executesql @temp --OK

2.3 改

1
2
3
UPDATE  table
SET column1=expression1,column2=expression2(repeat any number of times)
WHERE condition

      fetch next from order_cursor into @temp --转到下一个游标,没有会死循环
    end

2.4 删

1
2
3
DELETE
FROM table
WHERE condition

删除前可以验证一下:

1
2
3
4
SELECT 
COUNT(*)
FROM table
WHERE condition

 

如果想要删除所有的行,可以:

1
DELETE FROM table

 

或者

1
TRUNCATE TABLE table

 

TRUNCATE TABLE优势在于速度更快,但是不提供记录事务的结果。
另外一个不同点是,TRUNCATE TABLE重新设置了用于自增型的列的当前值,DELETE不会。

    close order_cursor --关闭游标
    deallocate order_cursor --释放游标

三、别名

关键字:AS

    --用完之后要把临时表清空
    drop table #tempTable--需要注意的是,这种方法不能嵌套。

3.1 计算字段

使用计算字段可以做如下的事情:

  • 选择特定的单词或者数值
  • 对单个或者多个列进行计算
  • 把列和直接量组合在一起。

  end

3.2 直接量

这个直接量和表中的数据没有任何关系,就是为了说明所用,下面这种类型的表达式就叫做直接量(literal value)。
图片 26

1
2
SELECT '直接量' AS `类型`,firstname,lastname 
FROM `customers` ;

图片 27
如图,结果中直接量就在一列中了。

  SET @i_start = @i_end 1;
  SET @i_end = CHARINDEX(',', @tableNames, @i_start);

3.3 算数运算

例子1:

1
2
SELECT  num*price AS total
FROM orders

 

例子2:

1
2
SELECT  firstname ' ' lastname AS 'fullname'
FROM users

 

在MySql中连接要是用CONCAT函数:

1
2
3
SELECT OrderID,FirstName,LastName,
CONCAT(FirstName,' ',LastName) AS 'fullname'
FROM orders

 

END

3.4 别名

1)列的别名

1
2
SELECT firstname AS fn
FROM customers

 

2) 表的别名

1
2
SELECT firstname 
FROM customers AS cu

 

说明:

  1. 列的别名是为了显示用的,别名会作为查询结果的表头,不能在WHERE中使用列的别名,会出错!!!
  2. 表的别名确实是为了方便操作用的,可以在WHERE中使用列的别名进行!

四、使用函数

函数要有一组圆括号跟在关键字后边,圆括号告诉我们,这是一个函数!

4.1 字符函数

LEFT&RIGHT

LEFT(CharacterValue,NumberOfCharacters)
含义:选择CharacterValue字段的左边NumberOfCharacters几个字符。
ps:RIGHT是右边几个字符。

LTRIM&RTRIM

LTRIM(CharacterValue)
可以删除左边开始的空格。RTRIM作用类似。

SUBSTRING

SUBSTRING(CharacterValue,StartPositon,NumberOfCharacters)
含义:选择从开始位置(包括),N个长度的字符。

1
2
SELECT 
SUBSTRING('thewhitegoat',4,5) AS 'The Answer'

 

返回:white

4.2 日期/时间函数

GETDATE

1
SELECT GETDATE()

返回当前日期和时间。
PS:在MySql中,等价函数是NOW,在Oracle中是CURRENT_DATE

本文由澳门十大赌场最新排名发布于澳门十大赌场,转载请注明出处:sql语句进阶教程,快速刷新视图

关键词: mg老虎机开户

上一篇:sqlserver序列定时初始化,MySQL数据库的下载安装

下一篇:没有了